Java 數(shù)據(jù)類(lèi)型、變量

Java 數(shù)據(jù)類(lèi)型

??在 Java 中,對(duì)于每一種數(shù)據(jù)都定義了明確的具體的數(shù)據(jù)類(lèi)型,在內(nèi)存中分配了不同大小的內(nèi)存空間。
<center><p><img src="http://m.qpic.cn/psb?/V12fNjAq1vzOr1/.mBpniB9GEZZKwWgIt9Zx8xHm9LsBxW.r3naT1p7z6g!/b/dLYAAAAAAAAA&bo=dwN9AQAAAAADByo!&rf=viewer_4" width="600"></p></center>

整數(shù)類(lèi)型 (byte、short、int、long)

1.Java 各整數(shù)類(lèi)型有固定的表數(shù)范圍和字段長(zhǎng)度,不受具體 OS{操作系統(tǒng):Operating System} 的影響,以保證 java 程序的可移植性。

2.Java 的整數(shù)類(lèi)型數(shù)據(jù)默認(rèn)為 int 類(lèi)型,聲明為 long 類(lèi)型時(shí)須在變量值的末尾加上一個(gè) 'l' 或 'L' 。

//1.定義 long 型變量,值的末尾需加 'l' 或 'L'。
//2.整數(shù)類(lèi)型的數(shù)據(jù)默認(rèn)是 int 類(lèi)型,聲明為 long 類(lèi)型時(shí)不添加 'l' 或 'L' 不會(huì)報(bào)錯(cuò)。
//3.不加 'L' 默認(rèn)是 int 型,int 轉(zhuǎn)為 long 是安全的,所以會(huì)自動(dòng)轉(zhuǎn),能編譯通過(guò)。
//4.當(dāng)變量值超過(guò)了 int 的表數(shù)范圍時(shí),必須添加 'l' 或 'L' ,否則編譯不通過(guò),會(huì)報(bào)錯(cuò)!
long l1 = 231457l;
long l2 = 567323L;

3.聲明 long 型變量變量值后不加 'l' 或 'L' 編譯可以通過(guò),原因是整型變量值默認(rèn)是 int 類(lèi)型,占用 4 字節(jié),聲明為 long 類(lèi)型為 8 個(gè)字節(jié),int 轉(zhuǎn)為 long 是安全的(小轉(zhuǎn)大為自動(dòng)類(lèi)型轉(zhuǎn)換),不會(huì)損失精度,能編譯通過(guò),因此不會(huì)報(bào)錯(cuò)。

4.byte 字節(jié)、bit 位,一個(gè)位只能存儲(chǔ) 0 或 1 ,1 個(gè)字節(jié)等于 8 個(gè)位(1byte=8bit),電腦存文件底層使用的是字節(jié)(byte)。
<center><p><img src="http://m.qpic.cn/psb?/V12fNjAq1vzOr1/22FxMkYCj4D5JiQtZ0S5v0OlAT5.P9OUd1mZ9qzOTy8!/b/dDYBAAAAAAAA&bo=TAMAAQAAAAADB2w!&rf=viewer_4" width="600"></p></center>

浮點(diǎn)類(lèi)型 (float、double)

1.浮點(diǎn)類(lèi)型是帶小數(shù)點(diǎn)的數(shù)值,與整數(shù)類(lèi)型類(lèi)似,Java 浮點(diǎn)類(lèi)型也有固定的表數(shù)范圍和字段長(zhǎng)度,不受具體 OS 的影響。

2.Java 的浮點(diǎn)類(lèi)型數(shù)據(jù)默認(rèn)為 double 類(lèi)型,聲明為 float 類(lèi)型時(shí)須在變量值的末尾加上一個(gè) 'f' 或 'F' 。

//1.定義 float 型變量,值的末尾需加 'f' 或 'F'。
//2.浮點(diǎn)類(lèi)型的數(shù)據(jù)默認(rèn)是 double 類(lèi)型,聲明為 float 類(lèi)型時(shí)不添加 'f' 或 'F' 會(huì)報(bào)錯(cuò),編譯不通過(guò)!
//3.浮點(diǎn)數(shù)不加 'F' 默認(rèn)是 double 類(lèi)型,double 轉(zhuǎn) float 可能損失精度,因?yàn)椴粫?huì)自動(dòng)轉(zhuǎn),編譯是通不過(guò)的。
float f1 = 12.3f;
float f2 = 12.3F;

3.聲明 float 型變量變量值后不加 'f' 或 'F' 編譯不能通過(guò),原因是浮點(diǎn)型變量值默認(rèn)是 double 類(lèi)型,占用 8 字節(jié),聲明為 float 類(lèi)型為 4 個(gè)字節(jié),大轉(zhuǎn)小為強(qiáng)制類(lèi)型轉(zhuǎn)換,會(huì)損失精度,因此會(huì)報(bào)錯(cuò)。

4.浮點(diǎn)型常量有兩種表示形式:
 ?、偈M(jìn)制數(shù)形式,如:5.12、512.0f、.512   (必須有小數(shù)點(diǎn))
 ?、诳茖W(xué)計(jì)數(shù)法形式,如:5.12e2、512E2、100E-2
<center><p><img src="http://m.qpic.cn/psb?/V12fNjAq1vzOr1/C7dnA1Vfnpffqj7BJ67Ec4CIPWn7.DEV2TqM2mQKv8!/b/dLgAAAAAAAAA&bo=TAOSAAAAAAADB8!&rf=viewer_4" width="600"></p></center>

字符類(lèi)型 (char)

1.char 類(lèi)型用來(lái)表示通常意義上的 "字符" (2字節(jié)), char 只能表示一個(gè)字符(如中文字符、英文字符、標(biāo)點(diǎn)符號(hào)、轉(zhuǎn)義字符、Unicode 值等),要是多個(gè)字符需要使用 String 字符串來(lái)表示。

2.char 類(lèi)型是可以進(jìn)行運(yùn)算的,因?yàn)樗紝?duì)應(yīng)有 Unicode 碼。一個(gè) char 占用 2 個(gè)字節(jié)。

4.字符型常量的三種表現(xiàn)形式:
 ?、僮址A渴怯脝我?hào) ('')括起來(lái)的單個(gè)字符,涵蓋世界上所有書(shū)面語(yǔ)的字符。

char c1 = 'a';              // 使用 char 表示英文字符
char c2 = 'ab';      ?     // char 只能表示一個(gè)字符,'ab' 應(yīng)該聲明為 String 類(lèi)型
char c3 = '中';            // 使用 char 表示中文字符

????????②Java 中還允許使用轉(zhuǎn)義字符 '\' 來(lái)將其后的字符轉(zhuǎn)變?yōu)樘厥庾址统A俊?br> <center>

轉(zhuǎn)義字符 說(shuō)明 轉(zhuǎn)義字符 說(shuō)明
\n 換行符 \r 回車(chē)符
\t 制表符 \b 退格符
\' 單引號(hào) \" 雙引號(hào)
\|反斜線(xiàn) |轉(zhuǎn)義符

</center>

//1.使用 char 表示轉(zhuǎn)義字符,每一個(gè)轉(zhuǎn)義字符都是一個(gè)字符
char c1 = ‘\n’;   // '\n' 為換行符
char c2 = ‘\t’;   // '\t' 為制表符,相當(dāng)于 tab 鍵

//2.程序中使用 " \ " 來(lái)進(jìn)行符號(hào)的轉(zhuǎn)義。
System.out.println("魏鑫是個(gè)\"帥\"哥");    // 帥加個(gè)雙引號(hào)

????????③直接使用 Unicode 值來(lái)表示字符型常量:‘\uXXXX’。其中,XXXX代表一個(gè)十六進(jìn)制整數(shù)。

//使用 char 表示 Unicode 值
char c1 = "\u000a";   // '\u000a' 表示換行符 "\n"。
char c2 = '\u1234';   // '\u1234' 表示一個(gè) "?" 號(hào)。

布爾類(lèi)型 (boolean)

1.boolean 類(lèi)型適于邏輯運(yùn)算,一般用于程序流程控制。
   ● if 條件控制語(yǔ)句???????????● for 循環(huán)控制語(yǔ)句
   ● while 循環(huán)控制語(yǔ)句?????● do-while 循環(huán)控制語(yǔ)句

2.boolean 類(lèi)型變量只允許取值 true 和 false,不能取值為 null。
3.不可以使用 0 或非 0 的整數(shù)替代 false 和 true,這點(diǎn)和 C 語(yǔ)言不同。

//boolean 類(lèi)型只允許取值 true 和 false
boolean b1 = true;
boolean b2 = false;

String 類(lèi)型

? 字符串也是一種數(shù)據(jù)類(lèi)型,即 String 類(lèi)型,String 是一個(gè)不可變類(lèi),屬于引用數(shù)據(jù)類(lèi)型。

? String 類(lèi)型用于表示由零或多個(gè) 16 位 Unicode 字符組成的字符序列,即字符串。字符串可由單引號(hào)或者雙引號(hào)表示,字符串由零個(gè)或多個(gè)字符構(gòu)成,字符包括字母、數(shù)字、標(biāo)點(diǎn)符號(hào)和空格。字符串必須放在引號(hào)里,單引號(hào)和雙引號(hào)都允許使用。

? String 類(lèi)屬于引用類(lèi)型,可以使用 null 賦值。String 類(lèi)是一個(gè)典型的不可變類(lèi),String 對(duì)象創(chuàng)建出來(lái)就不可能被改變,創(chuàng)建出的字符串將存放在數(shù)據(jù)區(qū),保證每個(gè)字符串常量只有一個(gè),不會(huì)產(chǎn)生多個(gè)副本。

String s0 = "hello";
String s1 = "hello";
String s2 = "he" + "llo";
String s3 = new String("hello");
System.out.println(s0==s1);  //true
System.out.println(s0==s2);  //true
System.out.println(s0==s3);  //false
                    
//如何理解 String s3 = new String(“hello”); ?

? 字符串的賦值可以為 <font color="red">"字符串"</font> ,也可以是 <font color="red">數(shù)字 +"字符串"</font> 的形式。字符串與基本數(shù)據(jù)類(lèi)型不兼容,不能進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換,否則編譯報(bào)錯(cuò)。

? 字符串與基本數(shù)據(jù)類(lèi)型之間的運(yùn)算只能是連接運(yùn)算 ,使用加號(hào)(+)表示連接,得到的結(jié)果仍為一個(gè)字符串。

? 值 null 可以賦值給任何引用類(lèi)型的變量(類(lèi)、接口、數(shù)組) ,用以表示這個(gè)引用類(lèi)型變量中保存的地址為空。

//字符串也是一種數(shù)據(jù)類(lèi)型 String 類(lèi)型
String s = "abc";   
int i = 123;  
//字符串與基本數(shù)據(jù)類(lèi)型之間的運(yùn)算只能是連接運(yùn)算(+),得到的結(jié)果仍為一個(gè)字符串。
String str = s+i;  // 加號(hào) "+" 表示連接
System.out.println(str);   //結(jié)果為:abc123
        
//字符串與基本數(shù)據(jù)類(lèi)型不兼容,不能進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換,否則編譯報(bào)錯(cuò)。
//String s1 = 12;  【?】
String s2 = "12";    //字符串的賦值為 "字符串" 的形式
String s3 = 12 + "";  //字符串的賦值為 數(shù)字+"字符串" 的形式

自動(dòng)類(lèi)型轉(zhuǎn)換

? 在 java 程序中,不同的<font color="red">基本數(shù)據(jù)類(lèi)型</font>的值經(jīng)常需要進(jìn)行相互類(lèi)型轉(zhuǎn)換,類(lèi)型轉(zhuǎn)換分為自動(dòng)類(lèi)型轉(zhuǎn)換和強(qiáng)制類(lèi)型轉(zhuǎn)換。布爾類(lèi)型 boolean 占有一個(gè)字節(jié),由于其本身所代表的特殊含義,boolean 類(lèi)型與其他基本數(shù)據(jù)類(lèi)型不能進(jìn)行類(lèi)型的轉(zhuǎn)換(既不能進(jìn)行自動(dòng)類(lèi)型的提升,也不能強(qiáng)制類(lèi)型轉(zhuǎn)換),否則,將編譯出錯(cuò)。

? java 的所有數(shù)值型變量可以進(jìn)行相互轉(zhuǎn)換,如果系統(tǒng)支持把某種基本類(lèi)型的值直接賦值給另一種基本類(lèi)型的變量,則這種方式成為自動(dòng)類(lèi)型轉(zhuǎn)換。當(dāng)把一個(gè)表數(shù)范圍較小的數(shù)值或變量直接賦給另外一個(gè)表數(shù)范圍比較大的變量時(shí),系統(tǒng)將可以自動(dòng)類(lèi)型轉(zhuǎn)換,否則需要強(qiáng)制轉(zhuǎn)換。

? 自動(dòng)類(lèi)型轉(zhuǎn)換:當(dāng)容量小的數(shù)據(jù)類(lèi)型與容量大的數(shù)據(jù)類(lèi)型做運(yùn)算時(shí),容量小的類(lèi)型會(huì)自動(dòng)轉(zhuǎn)換為容量大的數(shù)據(jù)類(lèi)型。Ps:容量的大小是指表數(shù)范圍的大小,即占內(nèi)存的空間大小。

<center><p><img src="http://m.qpic.cn/psb?/V12fNjAq1vzOr1/SZpv*ygeaeuMvqXF269KPfI6JACwSfyc6S.80KKGBds!/b/dL4AAAAAAAAA&bo=ewN.AAAAAAARBzY!&rf=viewer_4" width="600"></p></center>

<center><p><img src="http://m.qpic.cn/psb?/V12fNjAq1vzOr1/LsDkMkXg6eDprSVu8c0kmTf8uI65WEm*5TjvM39iQpg!/b/dL4AAAAAAAAA&bo=4wJKAQAAAAARB5o!&rf=viewer_4" width="600"></p></center>

? 變量之間是可以進(jìn)行運(yùn)算的(除 boolean 類(lèi)型變量外),運(yùn)算的過(guò)程中會(huì)涉及到自動(dòng)類(lèi)型轉(zhuǎn)換和強(qiáng)制類(lèi)型轉(zhuǎn)換。<font color="red">當(dāng)有多種類(lèi)型的數(shù)據(jù)混合運(yùn)算時(shí),系統(tǒng)首先自動(dòng)將所有數(shù)據(jù)轉(zhuǎn)換成容量最大的那種數(shù)據(jù)類(lèi)型,然后再進(jìn)行計(jì)算</font>。注意點(diǎn):①byte,short,char 之間不會(huì)相互轉(zhuǎn)換,他們?nèi)咴谟?jì)算時(shí)首先轉(zhuǎn)換為 int 類(lèi)型。 ②boolean 類(lèi)型不可以轉(zhuǎn)換為其它的數(shù)據(jù)類(lèi)型。③char 字符類(lèi)型的數(shù)據(jù)都對(duì)應(yīng)著一個(gè) Unicode 值,因此也可以用來(lái)運(yùn)算。

? 基本類(lèi)型轉(zhuǎn)換為字符串:當(dāng)把任何基本類(lèi)型的值和字符串值進(jìn)行連接運(yùn)算時(shí)(使用 + 進(jìn)行連接運(yùn)算),基本類(lèi)型的值將自動(dòng)轉(zhuǎn)換為字符串類(lèi)型。因此,如果想將基本類(lèi)型的值轉(zhuǎn)換為對(duì)應(yīng)的字符串,可以把基本類(lèi)型的值和一個(gè)空字符串進(jìn)行連接。

//自動(dòng)類(lèi)型轉(zhuǎn)換
long l = 12L;  // 8字節(jié)
float f = l;   // 4字節(jié)
        
char c = 'a'; // 'a' 的 Unicode 值為 97,'A' 的 Unicode 值為 65
int i = c+1; 
System.out.println(i);  //結(jié)果為:98
        
byte b = 1;
short s = 12;
//1.當(dāng)char 、byte、short類(lèi)型的變量之間做運(yùn)算時(shí),默認(rèn)的結(jié)果為 int 類(lèi)型。
//2.當(dāng)char 、byte、short類(lèi)型的變量自身做運(yùn)算時(shí),默認(rèn)的結(jié)果類(lèi)型也為 int 類(lèi)型。
//3.規(guī)定char 、byte、short運(yùn)算默認(rèn)轉(zhuǎn)換為int類(lèi)型的原因:char 、byte、short的表數(shù)范圍很小,運(yùn)算時(shí)很容易超出范圍。
//short s1 = b+s;  【?】
//char c1 = c+b;   【?】

強(qiáng)制類(lèi)型轉(zhuǎn)換

? 強(qiáng)制類(lèi)型轉(zhuǎn)換:即強(qiáng)制顯示的把一種數(shù)據(jù)類(lèi)型轉(zhuǎn)換為另外一種數(shù)據(jù)類(lèi)型。強(qiáng)制類(lèi)型轉(zhuǎn)換是自動(dòng)類(lèi)型轉(zhuǎn)換的逆過(guò)程,將容量大的數(shù)據(jù)類(lèi)型轉(zhuǎn)換為容量小的數(shù)據(jù)類(lèi)型,使用時(shí)要加上強(qiáng)制轉(zhuǎn)換符:<font color="red">(目標(biāo)數(shù)據(jù)類(lèi)型)</font>。強(qiáng)制類(lèi)型轉(zhuǎn)換可能造成精度損失、降低或溢出,格外要注意。

//強(qiáng)制類(lèi)型轉(zhuǎn)換的運(yùn)算符是圓括號(hào):(目標(biāo)數(shù)據(jù)類(lèi)型)
目標(biāo)數(shù)據(jù)類(lèi)型 變量名 = (目標(biāo)數(shù)據(jù)類(lèi)型) Value;

? Java 中的類(lèi)型轉(zhuǎn)換就像倒水,如下圖所示,小杯的水倒進(jìn)大杯,水就不會(huì)流失。但是,如果大杯的水向小杯里倒,那么水就有可能會(huì)溢出來(lái)。類(lèi)型轉(zhuǎn)換也是一樣,容量大的數(shù)據(jù)類(lèi)型就像是大杯里的水,容量小的數(shù)據(jù)類(lèi)型就像小杯里的水,如果把容量大的數(shù)據(jù)類(lèi)型的變量的值賦給容量小的數(shù)據(jù)類(lèi)型的變量,當(dāng)數(shù)據(jù)大小超過(guò)容量小的數(shù)值類(lèi)型的表數(shù)范圍時(shí),就會(huì)發(fā)生數(shù)據(jù)截?cái)啵瑪?shù)據(jù)將會(huì)丟失。說(shuō)明:強(qiáng)制類(lèi)型轉(zhuǎn)換很容易造成精度損失、降低或溢出,使用時(shí)加倍小心。
<center><p><img src="http://m.qpic.cn/psb?/V12fNjAq1vzOr1/yIbyoQbNCVsZ745EKnYPHsLvhhcV*629eBMnJuTPQLw!/b/dFMBAAAAAAAA&bo=EAIEAQAAAAADBzU!&rf=viewer_4"></p></center>

? boolean 類(lèi)型不可以轉(zhuǎn)換為其它的數(shù)據(jù)類(lèi)型。

? 通常,字符串不能直接轉(zhuǎn)換為基本類(lèi)型,但通過(guò)基本類(lèi)型對(duì)應(yīng)的包裝類(lèi)則可以實(shí)現(xiàn)把字符串轉(zhuǎn)換成基本類(lèi)型。

//案例
String a = "123";   
int i = Integer.parseInt(a);
//1.強(qiáng)制類(lèi)型轉(zhuǎn)換:容量大轉(zhuǎn)換為容量小的,要使用強(qiáng)制類(lèi)型轉(zhuǎn)換符 () 。
long l = 12345L;
int i = (int)l;
        
//2.強(qiáng)制類(lèi)型轉(zhuǎn)換的問(wèn)題:容易導(dǎo)致精度的損失
int i2 = 12345;
byte b = (byte)i2;
System.out.println(b);  // 結(jié)果為:57 ,造成了精度的損失
        
//原因:造成精度損失,int為8字節(jié)32位,byte為1字節(jié)為8位,將int的32位從高位往底位砍到8位為止【高位字節(jié)數(shù)據(jù)丟失】,最后的十進(jìn)制結(jié)果為 57。
//小貼士:可使用電腦自帶的計(jì)算機(jī),選擇程序員模式進(jìn)行結(jié)果測(cè)試。

? 總結(jié)
1.java 中整數(shù)類(lèi)型默認(rèn)是 int 類(lèi)型,小數(shù)類(lèi)型默認(rèn)是 double 類(lèi)型。
2.char 類(lèi)型可以當(dāng)做一種特殊的整數(shù)類(lèi)型,每一個(gè)字符對(duì)應(yīng)著一個(gè) Unicode 值。
3.boolean 類(lèi)型不能轉(zhuǎn)換為其它數(shù)據(jù)類(lèi)型,其它類(lèi)型也不能轉(zhuǎn)換為 boolean 類(lèi)型。
4.小數(shù)類(lèi)型轉(zhuǎn)為整數(shù)類(lèi)型,小數(shù)可能被舍棄,出現(xiàn)精度損失,所以需要強(qiáng)制轉(zhuǎn)換。

表達(dá)式類(lèi)型的自動(dòng)提升

? 當(dāng)一個(gè) java 算術(shù)表達(dá)式中包含多個(gè)基本類(lèi)型的值時(shí),整個(gè)算術(shù)表達(dá)式的數(shù)據(jù)類(lèi)型將發(fā)生自動(dòng)提升。

? Java定義如下的自動(dòng)提升規(guī)則:
 ?、偎?byte 型、short 型和 char 型將被提升到 int 型。
 ?、谡麄€(gè)算術(shù)表達(dá)式的數(shù)據(jù)類(lèi)型自動(dòng)提升到與表達(dá)式中最高等級(jí)操作數(shù)同樣的類(lèi)型。操作數(shù)的等級(jí)排列如下圖所示,位于箭頭右邊類(lèi)型的等級(jí)高于位于箭頭左邊類(lèi)型的等級(jí)。

<center><p><img src="http://m.qpic.cn/psb?/V12fNjAq1vzOr1/m5mQUizvYsO0I8zTiIvGYoNC73hSqWMAi5sHRjVgQ!/b/dL8AAAAAAAAA&bo=bwNkAAAAAAADByo!&rf=viewer_4" width="600"></p></center>

1.下面程序示范了一個(gè)典型的錯(cuò)誤:

//定義一個(gè)short類(lèi)型變量
short sValue = 5;
//表達(dá)式中的sValue將自動(dòng)提升到int類(lèi)型,則右邊的表達(dá)式類(lèi)型為 int
//將一個(gè)int類(lèi)型賦給short類(lèi)型的變量將發(fā)生錯(cuò)誤。
sValue = sValue - 2;

//上面的 sValue -2 表達(dá)式的類(lèi)型將被提升到int類(lèi)型,這樣就是把右邊的int型值賦給左邊的short型變量,從而引起錯(cuò)誤。

2.表達(dá)式類(lèi)型自動(dòng)提升的正確示例代碼

byte b = 40;
char c = 'a';
int i = 23;
double d = .314;  //0.314
//右邊表達(dá)式中在最高等級(jí)操作數(shù)為 d(double型)
//則右邊表達(dá)式的類(lèi)型為double型,故賦給一個(gè)double型變量
double result = b + c + i * d;
//將輸出144.222
System.out.println(result);

//注意點(diǎn):表達(dá)式的類(lèi)型將嚴(yán)格保持和表達(dá)式中最高等級(jí)操作數(shù)相同的類(lèi)型

3.兩個(gè) int 整數(shù)進(jìn)行除法運(yùn)算,即使無(wú)法除盡,也將得到一個(gè) int 結(jié)果。

int val = 3;
//右邊表達(dá)式中2個(gè)操作數(shù)都是int,故右邊表達(dá)式的類(lèi)型為int
//因此,雖然23/3不能除盡,依然得到一個(gè)int整數(shù)
int intResult = 23 / val;
//將輸出7
System.out.println(intResult);

//當(dāng)兩個(gè)整數(shù)進(jìn)行除法運(yùn)算時(shí),如果不能整數(shù),得到結(jié)果將是把小數(shù)部分截?cái)嗳≌蟮恼麛?shù)。

4.如果表達(dá)式中包含了字符串,則又是另一番情形:因?yàn)榘鸭犹?hào)(+)放在字符串和基本類(lèi)型值之間時(shí),這個(gè)加號(hào)是一個(gè)字符串連接運(yùn)算符,而不是進(jìn)行加法運(yùn)算。

//輸出字符串Hello!a7
System.out.println("Hello!" + 'a' + 7);
//輸出字符串104Hello!
System.out.println('a' + 7 + "Hello!");

//1.第一個(gè)表達(dá)式"Hello!" + 'a' + 7,先進(jìn)行"Hello!" + 'a'的運(yùn)算,將把'a'轉(zhuǎn)換成字符串,將拼接成字符串Hello!a,接著進(jìn)行"Hello!a" + 7的運(yùn)算,這也是一個(gè)字符串連接運(yùn)算,得到結(jié)果是Hello!a7。
//2.第二個(gè)表達(dá)式,先進(jìn)行'a' + 7加法運(yùn)算,其中'a'自動(dòng)提升到int型,變成a對(duì)應(yīng)的ASCII值:97,從97 + 7將得到104,然后進(jìn)行104 + "Hello!",104會(huì)自動(dòng)轉(zhuǎn)換成字符串,將變成兩個(gè)字符串的連接運(yùn)算,從而得到104Hello!。


Java 變量

變量的概念

1.變量的概念:變量是內(nèi)存中的一個(gè)存儲(chǔ)區(qū)域,該區(qū)域有自己的名稱(chēng)(變量名)和類(lèi)型(數(shù)據(jù)類(lèi)型),該區(qū)域的數(shù)據(jù)可以在同一類(lèi)型范圍內(nèi)不斷變化。
2.在 Java 中,對(duì)于每一種數(shù)據(jù)都定義了明確的具體數(shù)據(jù)類(lèi)型,在內(nèi)存中分配了不同大小的內(nèi)存空間。
3.Java 中的每個(gè)變量都必須先聲明,后使用。

4.變量的作用域:Java 中的變量是有作用范圍(Scope)的,也稱(chēng)作用域。一旦超出變量的作用域,就無(wú)法再使用這個(gè)變量。在程序中,變量一定會(huì)被定義在某一對(duì)大括號(hào)中,該大括號(hào)所包含的代碼區(qū)便是這個(gè)變量的作用域。即<font color="red"> Java 變量的作用域?yàn)橐粚?duì) { } 之間有效。</font> Ps:是距離變量最近的 {} 內(nèi)有效。

5.Java 中的每個(gè)變量都會(huì)有一個(gè)初始化值,默認(rèn)初始化或顯示初始化。
6.變量是通過(guò)使用變量名來(lái)訪(fǎng)問(wèn)這塊區(qū)域的。
7.Java 中定義變量的格式:

//Java 變量的語(yǔ)法
數(shù)據(jù)類(lèi)型 變量名 = 初始化值;

變量的分類(lèi)

1.按數(shù)據(jù)類(lèi)型:基本數(shù)據(jù)類(lèi)型(8種)和引用數(shù)據(jù)類(lèi)型(類(lèi)、接口、數(shù)組)。

  • 在 Java 中,對(duì)于每一種數(shù)據(jù)都定義了明確的具體數(shù)據(jù)類(lèi)型,在內(nèi)存中分配了不同大小的內(nèi)存空間。

<center><p><img src="http://m.qpic.cn/psb?/V12fNjAq1vzOr1/.mBpniB9GEZZKwWgIt9Zx8xHm9LsBxW.r3naT1p7z6g!/b/dLYAAAAAAAAA&bo=dwN9AQAAAAADByo!&rf=viewer_4" width="600"></p></center>

2.按聲明的位置的不同:
 ?、僭诜椒w外,類(lèi)體內(nèi)聲明的變量稱(chēng)為成員變量。
 ?、谠诜椒w內(nèi)部聲明的變量稱(chēng)為局部變量。
  ③成員變量和局部變量在初始化值方面的異同:【同】都有生命周期 【異】局部變量除形參外,需顯式初始化。
<center><p><img src="http://m.qpic.cn/psb?/V12fNjAq1vzOr1/2yR9mLQEDQQpALqM1Wv7CRgz5JKjEShYxpkdhll.uZQ!/b/dLYAAAAAAAAA&bo=GQNAAQAAAAADB3k!&rf=viewer_4" width="600"></p></center>

本文由博客一文多發(fā)平臺(tái) OpenWrite 發(fā)布!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容