(一)基本數據類型
1.整數型
首位為符號位,後面是數字位,符號位為0表示正數,後面數字位直接二進制轉化為10進制;符號位1為負,把後面所有的位數取反(即0,1互換),再轉化為10進制後加1,就得到該負數的絕對值。
整型
字節
最大存儲數據
存放的數據范圍
Byte
1(8bit)
28-1
-27~27-1
Short
2(16bit)
216-1
-215~215-1
Int
4(32bit)
232-1
-231~231-1
long
8(64bit)
264-1
-263~263-1
整型中默認類型是int型,有以下表達方式:
十進制: 語法→0~9之間的數字,如int x=123;
8進制 : 語法→加前綴0,如int x=0123;
16進制:語法→加前綴0x或0X;如int x=0x123;
注:長整型數字需加後綴L或者l,如long x=9876543210L;
2.浮點型
首位為符號位,中間是指數位e,表示2的階乘,後面是尾數位m(0<=m<1),指數位的首位是指數符號位,
數字表示:(1+m)*2e
浮點型
字節
數據范圍
備注
Float-單精度
4(32bit)
3.4e-45 ~ 1.4e38
(-2128~2128)
直接賦值需在最後加f或者F
Double-雙精度
8(64bit)
4.9e-324 ~ 1.8e308
(-21024 ~21024 )
直接賦值可以在最後加d或者D,也可不加
符號位
指數位e
尾數位m (0<m<=1)
0/1
符號位(首位)
剩余位
2-1
2-2
2-3
……
Float
1位
7位
23
double
1位
10位
52
浮點型默認類型是double型。浮點型有2種寫法:
小數型:如1.2
指數型:語法→數字A e(或E) 數字B,表示數字A乘以10的數字B次方,如2e3→2*103=2000; -3e-2→-3*10-2=-0.03
注:強制表示單精度浮點型,在數字後面加後綴f或者F,強制表示雙精度浮點型,在數字後加後綴d或者D。
3.字符型
char →單引號引用的單個Unicode碼字符或者16bit非負整數;占兩個字節,表示一個字符,寫法有兩種:
數字式:0~216-1之間的整數
字母式:單引號引用的1個字符,可以是任何字符,包括標點符號、數字、大小寫英文字母、日文、漢字等,是Unicode編號
字母式寫法中單引號引用的內容中,還有以下寫法:
字符:如'a'
8進制: 語法→'\ddd',如'\123'
16進制:語法:‘\uhhhh', 如'\u9646'
部分特殊字符,'\字母',如'\t'表示縮進符,'\n' 表示換行符, '\r'表示回車符
4.布爾型(邏輯型)
boolean,只有兩個值,true/false,或者邏輯表達式,不能用0,1表示,也不是“true”字符串
數據值域補充說明:
1.一個bit是計算機存儲的最小數據單位,即1位,只可能是0或者1;
2.一個byte由8個bit組成,即8位,可以表示256個整數值,又由於byte在java中有符號之分(正負數),所以范圍是-128~127;
3.一個char在java中有兩個byte組成,用來表示一個字符,即unicode編碼,是無符號類型;
4.int和float在java中由4個byte組成;
5.每個long或者double型變量占用8個byte的存儲空間;
6.1T=1024G, 1G=1024M, 1M=1024K, 1K=1024B;
(二)引用數據類型
所有用class,interface,abstract 定義的類;
String也是java定義的一個類,其數據存儲方式與基本數據類型一樣,但是String不是基本數據類型;基本數據類型也不是類;
(三)數據類型的轉換
源類型與目標類型要兼容,比如數字和字符串類型之間就不能轉換。數據轉換分為自動轉換和強制轉換:
自動轉換:從小范圍類型的字面量轉為大范圍類型,如byte,short→int→long,float→double;
強制轉換:語法→(類型) 表達式,可以進行大范圍類型的字面量,轉為小范圍類型。整數的強制轉換時通過截取保留最後長度的方式進行,所以容易出現正數強制轉換後變成負數的可能。(浮點型強制轉整型,實際是先轉為int型)
表達式類型提升規則:byte→short→int→long→float→double
例:
int x=10;
short y=(short)x; // 強制轉換
System.out.println(y)
short a=10;
int b=a; //自動轉換
System.out.println(b);
int c=400;
byte d=(byte)c; //強制轉換後正數轉換為了負數,此處輸出結果d=-112
System.out.println(d);