Java語言所定義的基本資料型別有
型別名稱 位元長度 範圍
boolean 1 true或false
byte 8 -128 ~ 127
short 16 -32768 ~ 32767
char 16 Unicode characters
int 32 -2147483648 ~ 2147483647
long 64 -9223372036854775808 ~ 9223372036854775807
float 32 +-3.402823710+38 ~ +-1.3023984610-45
double 64 +-1.7676931348623157010+308 ~ 4.9406564584124654410-324
Java的資料型態裡沒有unsigned。
Java對數值型態的轉換比C稍微嚴格一點,下列左邊的部分都可以指定(assignment)給右邊的型別:
byte --> short --> int --> long --> float --> double
除上述外,其他型別間的轉換都必須下達型別轉換(Type Casting)命令來處理,其形式為圓括弧裡寫上型別名稱,如(double)
由於Java在char的型態部分採用Unicode,因此字元常數的表示法,除因循C的規則外,也可以直接指定16bits Unicode編碼給char型別的變數。例如由Windows "字元對應表" 程式中可查到象棋中的紅車的unicode編碼為4FE5, Java可用 '\u4fe5' 來表達。Java的變數也可以用Unicode來命名,換句話說,你可以用中文取變數名稱。
除了這些基本資料型別外,Java還有一個稱為Reference(參考)的型別。Reference用來存取Object(物件),其功能和C語言的pointer用來存取記憶體有點像,但沒有pointer的&+-等運算符號,而且Reference只能存取型態相符合的類別。宣告Reference的語法是ClassName varName,例如
String s;
宣告s是一個型態為reference的變數,這表示我們可透過s來存取屬於String類別的物件(s is a reference to String object)。
要特別強調的是, s並不是物件, 而是用來指向String物件的reference。打個比方,
public class 動物 {
動物 手指頭; // java 因字元編碼使用unicode, 所以可用中文當變數名稱
public static void main(String[] arg) {
動物 手指頭2;
手指頭2 = new 動物();
}
}
變數 "手指頭" 宣告為reference, 可指向屬於 class "動物" 的物件, 手指頭不是動物, 而是用手指頭指向某隻動物。
java.lang.Float f;
java.lang.Double d;
java.lang.Integer i;
以上變數的型態都是reference