1 boolean型別不可以轉換成其他的資料型別,其他型別也不能轉換為boolean型別。
2 整形,字元型, 浮點型的資料在混合運算中可以互相轉換。
* 容量小的型別自動轉換成容量大的資料型別。資料型別按容量大小排序為:
# byte, short, char->int->long->float->double
# byte, short, char 之間不會互相轉換,他們三者在計算時首先轉換成int型別
* 容量大的資料型別轉換成容量小的資料型別時,需要加上強制轉換符,但可能造成精度降低或溢
出,使用時要格外注意。
* 有多種型別的資料混合運算時,系統首先自動的轉換成容量最大的那一種資料型別,然後再進行計算
* 實數常量(如: 1.2)預設為double
* 整數常量 (如:123)預設為int
典型例子分析:
(1) byte b1 = 1;
byte b2 = 2;
byte b3 = (byte) (b1 + b2);
分析:看到乙個整數,如無指明,則系統預設為int型。乙個int型的數可以直接賦值給byte,short,
char但不能超過他的範圍(如:byte表示範圍為:-128-127,所以我們不能把129賦給乙個byte)如:
long l = 30000000000l;//此處必須加l。不加則顯示錯誤資訊:過大的整數。
(2) 整數的溢位與實數的溢位存在不同之處:
如:byte b1 = 67;
byte b2 = 89;
byte b3 = (byte)( b1 + b2);
分析:很明顯b3溢位了,不過列印出來的結果會顯示-100,這是因為整數的溢位是直接取其低位元組,而把高位元組去掉。但是:
double d = 1e200;
float f = (float)d;
則列印出來的結果顯示為:infinity。只是因為浮點數在計算機內部表示時還要考慮到小數點,所以如果直接把高位元組的去掉是不行的。
(3)可以把float強制轉換成long型別,捨去小數部分,而不是簡單的四捨五入。
注:float f = 0.1;
看到乙個浮點數,如無指明,則系統預設為double型,因此要變成float型,需要指明或作強制轉換:
正解:float f = 0.1f; 或者:float f = (float) 0.1;
(4) 錯例:float f = 0.1 + 123 * 0.1;
分析:由於有多種型別的資料混合運算時,系統首先自動的轉換成容量最大的那一種資料型別,然後再進行計算。此處結果為double型,如需強制轉換成float型:
float f = (float)( 0.1 + 123 * 0.1);
JAVA基本資料型別轉換
boolean型別不可以轉換成其他的資料型別 整形 字元型 浮點型的資料在混合運算中相互轉換,轉換時遵循如下規則 容量小的型別自動轉換成容量大的資料型別 資料型別按容量大小排序如下 byte,short,char int long float double 要注意的是byte,short,char之...
JAVA基本資料型別轉換
boolean不能轉換成其他的資料型別 容量小的自動轉換成容量大的,而容量大的轉換成容量小的時候就要加上強制轉換符,可能造成精度降低或者溢位。容量自大到小排列順序 byte,short,char int long float double byte,short,char之間不會相互轉換,計算時候首先...
java基本資料型別轉換
關於基本資料型別轉換規則 1.8種基本資料型別除boolean型別之外都可以相互轉換.2.小容量向大容量轉換叫做自動型別轉換 byte3.byte,short,char做混合運算的時候,各自都先轉換成int在做運算 4.大容量向小容量轉換是強制型別轉換,需要加強制轉換符,編譯雖然通過,執行期可能損失...