識別字(Identifier),由你決定的名稱,通常使用在 變數,方法,類別上,規則為
第一個字元予許 英文字母(大小寫皆可),底線(_),錢號($),其它禁止,之後的字可多加數字(0123...)
關鍵字(KeyWord),在 Java 中有特殊用途,不可當作識別字
abstract , continue , for , new , switch , assert , default , goto , package , synchronized , boolean , do , if , private , public , protected , this , break , int , double , implements , throw , byte , else , import , throws , case , enum , instanceof , return , transient , catch , extends , int , short , try, char , final , interface , static , void , class , finally , long , strictfp , volatile , const , float , native , super , while
Java 的基本類型可分為 byte , short , int , long , float , double , char , boolean ,其中 byte , short , int , long 為整數類型, float , double 屬於浮點數類型, char , boolean 各屬不同類型
首先介紹整數類型,基本的轉換單位為 1 byte 等於 8 bits 也等於 2 的 8 次方範圍,然而第 1 個 bit 為正負號表示, 所以縮減為 2 的 7 次方範圍,其中 0 為正數的範圍,所以必須減 1 ,如下
byte -> 1 byte -> 8 bits -> 範圍在 負 2 的 7 次方 ~ 正 2 的 7 次方減 1
short -> 2 bytes -> 16 bits -> 範圍在 負 2 的 15 次方 ~ 正 2 的 15 次方減 1
int -> 4 bytes -> 32 bits -> 範圍在 負 2 的 31 次方 ~ 正 2 的 31 次方減 1
long -> 8 bytes -> 64 bits -> 範圍在 負 2 的 63 次方 ~ 正 2 的 63 次方減 1
重點: 注意各類型範圍 ,整數也可用 8,16進位顯示,如 int i = 0x8a;
1: byte b0 = 1;
2: byte b1 = 0x10;
3: short s0 = 0010;
4: int i1 = 123;
5: long l1 = 456;
6:
7: System.out.println(b0);//1
8: System.out.println(b1);//16
9: System.out.println(s0);//8
10: System.out.println(i1);//123
11: System.out.println(l1);//456
浮點數類型有 float , double 2種類型,各佔 4 bytes,和 8 bytes空間,預設是 double , 浮點數為非精準數,超過小數點範圍時會產生不正常的數值, float 可儲存 7 位小數點, double 可儲存 15 位小數點,而 double 和 float 都可承接整數類型,如果 float (或double) 承接整數小於等於 7 位數,會多顯示小數點 1 位,大於7位數字就會顯示科學符號,如12345678 -> 1.2345678E7
1: //float f1 = 1.0; 錯誤 因為浮點數預設為double,可改為1.0f
2: float f1 = 1.0F;//或大寫F也可
3: double d1 = 2.0;//或2.0d都可
4:
5: float f2 = 1234567;//float可承接整數,小於等於7位數會多顯示1位小數點
6: double d2 = 1234567D;
7:
8: float f3 = 12345678;//超過 7 位會顯示科學符號
9: double d3 = 12345678;
10:
11: System.out.println(f1);//1.0
12: System.out.println(d1);//2.0
13: System.out.println(f2);//1234567.0
14: System.out.println(d2);//1234567.0
15: System.out.println(f3);//1.2345678E7
16: System.out.println(d3);//1.2345678E7
字元型態 char ,占有 2 bytes 空間,只能儲存單個字元,使用單引號 ' ' 包起來,參考 Unicode字元表對應數字, \u 代表使用 Unicode 編碼,如 '\u0000' ,而跳脫字元的使用, \ 會將其後的字元是為單純字符如, \" 會取消雙引號 " 功能
布林型態 boolean ,占有 1 byte 空間,只有 true 和 false 2種變化
1: char c1 = '稀';
2: char c2 = '@';
3: //char c3 = 'ab'; 錯誤 只能放單個字符
//char c3 = '\'; 錯誤 \ 會取消'字符變成 char c3 = ';
4: int i1 = c1;
5: char c4 = '\u7a00';//7a00 也是 稀 的Unicode 編碼(16進位)
6:
7: boolean b1 = false;
8: boolean b2 = true;
9:
10: System.out.println(c1);//稀
11: System.out.println(c2);//@
12: System.out.println(i1);//32232
13: System.out.println(c4);//稀
14: System.out.println(b1);//false
15: System.out.println(b2);//true
基本類型的轉型使用
1.小類型轉大類型為自動轉型,一般不會有問題
2.大類型轉小類型為強制轉型,可能會有丟失的位數
3.不同類型作運算,小類型會先轉成大類型再作運算,運算結果也會是大類型,此時如果指派給某個變數,就要小心其類型是否可以容納
1: int i1 = 2;
2: float f1 = 3.9f;
3: //int i2 = i1+f1; 錯誤 運算結果是 float 類型不可指定給int,除非強制轉型或改 i2 型態為float
4: //int i2 = (int)i1+f1; 錯誤 轉型只轉i1,沒有轉到 f1
5: int i2 = (int)(i1+f1);
6: int i3 = i1+(int)(f1);
7:
8: double d1 = 2+3.9;
9:
10: //int i4 = 1+2.0+22234; 錯誤 運算結果是 double 類型不可指定給int,除非強制轉型或改 i4 型態double
11:
12: System.out.println(i2);//5
13: System.out.println(i3);//5
14: System.out.println(d1);//5.9