常量與變量都是程序在運(yùn)行時(shí)用來存儲(chǔ)數(shù)據(jù)一塊內(nèi)存空間
常量的值在程序運(yùn)行時(shí)不能被改變,java中聲明常量必須使用final關(guān)鍵字。常量還可以分為兩種意思:
第1種意思,就是一個(gè)值,這個(gè)值本身,我們可以叫它常量,舉幾個(gè)例子:
整型常量: 123
實(shí)型常量:3.14
字符常量: 'a'
邏輯常量:true、false
字符串常量:"helloworld"
這只是說法的問題,比如7這個(gè)數(shù),我們就可以說“一個(gè)int類型的常量7 ”
第2種意思,表示不可變的變量,這種也叫常量,從語法上來講也就是,加上final,使用final關(guān)鍵字來修飾某個(gè)變量,然后只要賦值之后,就不能改變了,就不能再次被賦值了
//聲明一個(gè)int類型的常量ifinal int i = 1;//聲明一個(gè)String對(duì)象類型的常量s,"Hello"字符串也是一個(gè)常量final String s = "Hello";
需要注意的是:常量在聲明時(shí)必須要給這個(gè)常量賦一個(gè)值。
是程序運(yùn)行時(shí)用來存儲(chǔ)數(shù)據(jù)的一塊內(nèi)存空間,是程序中最基本的存儲(chǔ)單元,我們可以使用變量名訪問變量。
按聲明位置分:
局部變量
成員變量
方法的參數(shù)是局部變量。
public class Test{ int i1 = 1; //成員變量 public class static main(String[] args){ //args是方法的參數(shù),所以也是局部變量 int i2 = 2; //局部變量 }}
按數(shù)據(jù)類型分:
基本數(shù)據(jù)類型變量
引用數(shù)據(jù)類型變量
public class Test{ int i = 1; //基本數(shù)據(jù)類型變量 String s = new String(); //引用數(shù)據(jù)類型}
我們使用變量前必須要先聲明和賦值,聲明和賦值可以分開,也可以結(jié)合為一步;
成員變量在聲明時(shí)如果沒有為其顯式賦值,則會(huì)為其分配一個(gè)默認(rèn)值。
public class Test{ int i3; //如果是成員變量,系統(tǒng)會(huì)為其默認(rèn)分配一個(gè)值0
public static void main(String[] args){ int i1; //聲明 i1 = 1; //賦值 int i2 = 2; //聲明的同時(shí)為其賦值,2這個(gè)值也叫“直接量” System.out.PRintln(i1); //使用,將變量的值輸出到Java控制臺(tái) }}
Java是一種強(qiáng)類型語言,所謂強(qiáng)類型,就是每個(gè)變量表達(dá)式在編譯時(shí)就必須要有一個(gè)確定的數(shù)據(jù)類型。Java數(shù)據(jù)類型分為兩大類:基本類型和引用類型。
引用數(shù)據(jù)類型為:類、接口、數(shù)組。
Java中的基本數(shù)據(jù)類型分為四類八種,分別為:
基本數(shù)據(jù)類型 | |||||||
數(shù)值型 | 字符類型char
占用空間:2字節(jié) | 布爾類型boolean
占用空間:1位 | |||||
整數(shù)類型 | 浮點(diǎn)類型 | ||||||
字節(jié)byte | 短整型short | 整型int | 長(zhǎng)整型long | 單精度型long | 雙精度型double | ||
1字節(jié) | 2字節(jié) | 4字節(jié) | 8字節(jié) | 4字節(jié) | 8字節(jié) | ||
-128~127 | -32768~32767 | -2147483648 ~2147483647 | -9223372036854774808 ~9223372036854774807 | -3.403E38 ~3.403E38 | -1.798E308 ~1.798E308 |
byte b1 = 127; //正確byte b2 = 128; //錯(cuò)誤,超出范圍short = b1; //正確,將另外一個(gè)變量的值賦給該變量,并且沒有超出范圍int i1 = 12;//正確int i2 = 012; //正確int i3 = 0x12; //正確System.out.println(i2); //輸出10,因?yàn)閕2是以8進(jìn)制方式賦值的System.out.println(i3); //輸出18,因?yàn)閕3是以16進(jìn)制方式賦值的long lo = 2147483648L; //long類型聲明需要加上L
float f1 = 123;float f2 = 123.4F;double d1 = 1234.5;double d = 3.141_592_65_36 //正確,java7后為了使比較長(zhǎng)的數(shù)據(jù)較有可讀性,可以在數(shù)字之間使用下劃線
char c1 = '你'; //正確char c2 = '你好'; //錯(cuò)誤char c3 = '/u9999'; //正確System.out.println(c3); //輸出'香'
用來存儲(chǔ)"真","假"的類型,只有true和false兩種值。
boolean b = true;
byte b = 127;short s = b; //會(huì)自動(dòng)轉(zhuǎn)換為shortb = (byte)s; //不會(huì)自動(dòng)轉(zhuǎn)換,需要強(qiáng)制轉(zhuǎn)換
public class Test { public static void main(String[] args) throws Exception { double d = 12222222222222222222222222222222222222222222222222222.3; float f = (float) d; //d的值已經(jīng)超出了float的范圍,所以轉(zhuǎn)換會(huì)“溢出”,但是編譯不會(huì)報(bào)錯(cuò) System.out.println(f); //因?yàn)楫a(chǎn)生了溢出,所以輸出“Infinity” }}
byte b1 = 1;byte b2 = (byte) (b1 + 2); //數(shù)值運(yùn)算時(shí)會(huì)自動(dòng)轉(zhuǎn)換為int,所以計(jì)算出結(jié)果后將值再賦給byte類型變量b2時(shí)需要強(qiáng)制轉(zhuǎn)換
long lo = (long)2;long lo2 = 2L; //這兩種聲明或轉(zhuǎn)換有本質(zhì)區(qū)別
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注