Java和C語言相同,是一種強類型語言,每個變量都必須聲明其數據類型。 Java的數據類型可分為兩大類:基本數據類型和引用數據類型。
Java中定義了3類8種基本數據類型
-
數值型- byte、 short、int、 long、float、 double
-
字符型- char
-
布爾型-boolean

引用數據類型的大小統一為4個字節,記錄的是其引用對象的地址!
下面對整形變量/常量,浮點型變量/常量,字符型變量/常量,boolean類型變量/常量一一闡述:
· 整形變量/常量
整型用於表示沒有小數部分的數值,它允許是負數。整型的范圍與運行Java代碼的機器無關,這正是Java程序具有很強移植能力的原因之一。與此相反,C和C++程序需要針對不同的處理器選擇最有效的整型。
| 類型 |
占用存儲空間 |
表數范圍 |
| byte |
1字節 |
-27 ~ 27-1(-128~127) |
| short |
2字節 |
-215 ~ 215-1(-32768~32767) |
| int |
4字節 |
-231 ~ 231-1 (-2147483648~2147483647)約21億 |
| long |
8字節 |
-263 ~ 263-1 |
Java 語言整型常量的四種表示形式
-
十進制整數,如:99, -500, 0
-
八進制整數,要求以 0 開頭,如:015
-
十六進制數,要求 0x 或 0X 開頭,如:0x15
-
二進制數,要求0b或0B開頭,如:0b01110011
Java語言的整型常數默認為int型,聲明long型常量可以后加‘ l ’或‘ L ’ ,建議用大寫 L。
長整型常數的聲明
long a = 55555555; //編譯成功,在int表示的范圍內(21億內)。
long b = 55555555555;//不加L編譯錯誤,已經超過int表示的范圍。
我們修改成long類型的常量即可:
long b = 55555555555L;
·浮點型變量/常量
帶小數的數據在Java中稱為浮點型。浮點型可分為float類型和double類型,默認是double類型!
| 浮點型數據類型 |
||
| 類型 |
占用存儲空間 |
表數范圍 |
| float |
4字節 |
-3.403E38~3.403E38 |
| double |
8字節 |
-1.798E308~1.798E308 |
float類型又被稱作單精度類型,尾數可以精確到7位有效數字,在很多情況下,float類型的精度很難滿足需求。而double表示這種類型的數值精度約是float類型的兩倍(14位有效數字),又被稱作雙精度類型,絕大部分應用程序都采用double類型。浮點型常量默認類型也是double。
Java浮點類型常量有兩種表示形式
-
十進制數形式,例如:3.14 314.0 0.314
-
科學記數法形式,如314e2 314E2 314E-2
float類型的數值有一個后綴F或者f ,沒有后綴F/f的浮點數值默認為double類型。也可以在浮點數值后添加后綴D或者d, 以明確其為double類型。
float類型賦值時需要添加后綴F/f
float f = 3.14F; double d1 = 3.14; double d2 = 3.14D;
浮點數的比較:
例一:
float f = 0.1f; double d = 1.0/10; System.out.println(f==d);//結果為false
例二:
float d1 = 423432423f; float d2 = d1+1; if(d1==d2){ System.out.println("d1==d2");//輸出結果為d1==d2
}else{ System.out.println("d1!=d2"); }
運行以上兩個示例,發現例一的結果是“false”,而例二的輸出結果是“d1==d2”。這是因為由於字長有限,浮點數能夠精確表示的數是有限的,因而也是離散的。 浮點數一般都存在舍入誤差,很多數字無法精確表示(例如0.1),其結果只能是接近, 但不等於。二進制浮點數不能精確的表示0.1、0.01、0.001這樣10的負次冪。並不是所有的小數都能可以精確的用二進制浮點數表示。
java.math包下面的兩個有用的類:BigInteger和BigDecimal,這兩個類可以處理任意長度的數值。BigInteger實現了任意精度的整數運算。BigDecimal實現了任意精度的浮點運算。
因此:不要使用浮點數進行比較!浮點數存在舍入誤差,數字不能精確表示。如果需要進行不產生舍入誤差的精確數字計算,需要使用BigDecimal類。避免比較中使用浮點數,需要比較請使用BigDecimal類。
·字符型變量/常量
字符型在內存中占2個字節,在Java中使用單引號來表示字符常量。例如’A’是一個字符,它與”A”是不同的,”A”表示含有一個字符的字符串。
char 類型用來表示在Unicode編碼表中的字符。Unicode編碼被設計用來處理各種語言的文字,它占2個字節,可允許有65536個字符。
字符型舉例:
char eChar = 'a'; char cChar ='中';
Unicode具有從0到65535之間的編碼,他們通常用從’\u0000’到’\uFFFF’之間的十六進制值來表示(前綴為u表示Unicode)
字符型的十六進制值表示方法:
char c = '\u0061';
轉義字符:
char c2='\n'; //代表換行符
轉義字符:
| 轉義符 |
含義 |
Unicode值 |
| \b |
退格(backspace) |
\u0008 |
| \n |
換行 |
\u000a |
| \r |
回車 |
\u000d |
| \t |
制表符(tab) |
\u0009 |
| \“ |
雙引號 |
\u0022 |
| \‘ |
單引號 |
\u0027 |
| \\ |
反斜杠 |
\u005c |
·Boolean類型變量/常量
boolean類型有兩個常量值,true和false,在內存中占一位(不是一個字節),不可以使用 0 或非 0 的整數替代 true 和 false ,這點和C語言不同。 boolean 類型用來判斷邏輯條件,一般用於程序流程控制 。
Boolean類型:
boolean flag ; flag = true; //或者flag=false;
if(flag) { // true分支
} else { // false分支
}
Less is More!!!不要這樣寫:if ( flag == true ),容易寫錯成if(flag=true),常用的寫法是if ( flag )或者if ( !flag)。
2019-02-13 13:05:59 房廷飛
