- Java程序設計實戰教程
- 李西明 陳立為主編
- 975字
- 2025-03-13 16:46:29
2.2.5 數據類型轉換
數據類型轉換是將一種數據類型的值轉換成另一種數據類型的值的操作。當把一種數據類型的值賦給另一種數據類型的變量時,需要進行數據類型轉換。數據類型轉換方式有兩種:自動類型轉換與強制類型轉換。
1.自動類型轉換
將取值范圍較小的類型的數值賦給取值范圍較大的類型的變量時,Java會自動將取值范圍較小的數值轉換為取值范圍較大的類型,這稱為自動類型轉換。自動類型轉換按數據類型取值范圍從小到大的順序轉換,不同類型數據間的優先關系為:byte → short → int → long → float →double。
另外,char型可以自動轉換為int型。
【示例】自動類型轉換,代碼如下。
double num1=100; //將整型值100賦給double型變量num1 System.out.println(num1); //將輸出100.0,而不是100
控制臺輸出100.0,而不是原始值100,證明發生了數據類型轉換。這里整型值100賦給double型變量num1,雖然類型不一致,但由于值100作為int型,其取值范圍比賦值目標變量的double型的取值范圍要?。灰虼税凑丈鲜鲰樞?,它可以自動轉換為double型,再賦給double型變量num1。同樣,已賦過值的取值范圍較小的類型的變量賦給取值范圍較大的變量時,會發生自動類型轉換。代碼如下。
int num1=100; double num2=num1; //int型變量賦給double型變量時,發生自動類型轉換 System.out.println(num2);
其他自動類型轉換示例程序,代碼如下。
public static void main(String[]args) { //自動類型轉換 byte b=100; short s=b;//byte-->short System.out.println("byte-->short:"+s); int i=s; //short-->int System.out.println("short-->int:"+i); char c='a'; i=c; System.out.println("char-->int:"+i); long l=i; //int--->long System.out.println("int--->long:"+l); float f=l; //long-->float System.out.println("long-->float:"+f); double d=f; //float-->double System.out.println("float-->double:"+d); }
運行結果:
byte-->short:100 short-->int:100 char-->int:97 int--->long:97 long-->float:97.0 float-->double:97.0
2.強制類型轉換
強制類型轉換是將取值范圍較大的類型的數值轉換成取值范圍較小的類型的數值。強制類型轉換的前提是數據類型要兼容,并且源類型的取值范圍大于目標類型。強制類型轉換可能會損失精度。強制類型轉換的語法:
(目標類型) 源類型;
源類型:取值范圍要比目標類型大,可以是值或變量。
【示例】強制類型轉換,代碼如下。
int num=(int)2.2; System.out.println(num);
輸出結果為2,將double型轉換成為int型,小數部分的0.2被截去,所以說強制類型轉換可能會損失精度。
int型強制轉換為byte型也會有精度損失。
【示例】強制類型轉換造成精度損失,代碼如下。
byte b; int i=264; b=(byte)i; System.out.println("i="+i); System.out.println("b="+b);
運行結果:
i=264 b=8
int型值264強制轉換為byte型后變成了8,明顯發生了精度損失,這是為何呢?因為int型值是32位的,即4字節,整數264存儲在計算機中的二進制形式如下所示:
00000000 00000000 00000001 00001000
當強制轉換為byte型時,由于byte型只有8位(1字節),這樣264的高位的3字節全部丟棄,只剩下最低位的1字節,此時二進制形式如下:
00001000
這樣,它的值就變成8了。
int型也可強制轉換為char型,如System.out.println((char)98);將輸出b,轉換依據是ASCII編碼表。
- Vue 3移動Web開發與性能調優實戰
- 從零開始構建企業級RAG系統
- Java面向對象軟件開發
- Visual Basic編程:從基礎到實踐(第2版)
- 深入實踐Spring Boot
- RTC程序設計:實時音視頻權威指南
- MySQL數據庫管理與開發實踐教程 (清華電腦學堂)
- Mastering Google App Engine
- Mastering Ext JS
- 碼上行動:用ChatGPT學會Python編程
- Mastering Android Development with Kotlin
- PLC應用技術(三菱FX2N系列)
- D3.js By Example
- R Data Science Essentials
- Mastering HTML5 Forms