基本資料型類別(primitive type),又稱為工具類別,例如char, int等,和外包類別(wrapper classes) Character, Integer是有分別的。
錯誤示範:
(例如通過char去調用Character裡的static method)
char a = 'a';
char capA = a.toUpperCase(a);
當做字串與數值的轉換的話,常常會將基本資料型類別(primitive type)包裝成外包類別(wrapper classes)
例如:
String str = "50";
Integer i = new Integer(str);
i = i-10;
System.out.println(i); //結果會是40
使用外包類別代替基本資料型類別的缺點是在運算上會比較基本資料型類別慢一點。另外,在進行比較時也要小心:
Character a=new Character('a');問題就出在 a > bigA 的比較時,這兩個物件會先做 unboxing 成基本資料型類別 primitive type 再比較。但是在做 a==a2 的比較時,這兩個變數會被當成物件來處理,而不做 unboxing,結果就是 false,因為本身就是不同的 reference,如要進行時應使用equals()。
Character bigA=new Character('A');
Character a2=new Character('a');
System.out.println("result a>A : "+(a>bigA)); //結果是true
System.out.println("result a==a2 : "+(a==a2)); //結果是false
System.out.println("result a==a2 : "+(a.equals(a2))); //結果是true
Primitive Type | Size | Minimum Value | Maximum Value | Wrapper Type |
char | 16-bit | Unicode 0 | Unicode 216-1 | Character |
byte | 8-bit | -128 | +127 | Byte |
short | 16-bit | -215 (-32,768) |
+215-1 (32,767) |
Short |
int | 32-bit | -231 (-2,147,483,648) |
+231-1 (2,147,483,647) |
Integer |
long | 64-bit | -263 (-9,223,372,036,854,775,808) |
+263-1 (9,223,372,036,854,775,807) |
Long |
float | 32-bit | 32-bit IEEE 754 floating-point numbers | Float | |
double | 64-bit | 64-bit IEEE 754 floating-point numbers | Double | |
boolean | 1-bit | true 或 false | Boolean |
0 意見:
張貼留言