本文介紹了Java中的類型轉換機制。主要內容包括:1) Java是強類型語言,不同類型運算時需要轉換;2) 類型轉換分為強制轉換(高轉低)和自動轉換(低轉高);3) 強制轉換可能導致內存溢出或精度損失;4) 布爾值不能轉換,對象類型不能轉不相干類型;5) 大數運算時要注意溢出問題,可通過提前轉換類型解決;6) JDK7支持數字用下劃線分割提高可讀性。文中通過多個代碼示例演示了類型轉換的具體應用和注意事項。
類型轉換
- 由於java是強類型語言,所以要進行有些運算的時候,需要用到類型轉換。
低————————————————————————————————>>高
byte,short,char->int->long->float->double
- 運算中,不同類型的數據先轉化為同一類型,然後進行運算。
- 強制類型轉換
- 自動類型轉換
============================================================================
問:怎麼進行轉換?
答:在變量的前面加上一個()中間寫類型就可以了。
例:
public class Demo05{
public static void main(String[] args){
int i = 128;
byte b = (byte)i;
System.out.println(i);
System.out.println(b);
}
}
輸出
128
-128
進程已結束,退出代碼為 0
================================================================================
隨堂代碼:
public class Demo05 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i;//內存溢出
//byte對應的類Byte最大值為127賦值128就會出問題。
//byte,short,char,int,long,float,double
//低--------------------------->>高
//強制轉換 (類型)變量名 高-->低
int i1 = 128;
double b1 = i1;
//自動轉換 低-->高
int i2 = 128;
//boolean b2 = i2;//報錯
System.out.println(i);
System.out.println(b);
System.out.println(i1);
System.out.println(b1);
System.out.println(i2);
//System.out.println(b2);
/*
注意點:
1.不能對布爾值進行轉換
2.不能把對象類型轉換為不相干類型
3.在把高容量轉換到低容量的時候,強制轉換
4.轉換的時候可能存在內存溢出,或者精度問題!
*/
System.out.println("====================================");
System.out.println((int)23.7);//23,小數點後數值丟失,精度有影響
System.out.println((int)-45.89f);//-45,小數點後數值丟失,精度有問題
System.out.println("====================================");
char c = 'a';
int d = c+1;
System.out.println(c);
System.out.println(d);
System.out.println((char) d);//高轉低強制轉換
}
}
輸出:
128
-128
128
128.0
128
====================================
23
-45
====================================
a
98
b
進程已結束,退出代碼為 0
隨堂代碼:
public class Demo06 {
public static void main(String[] args) {
//操作比較大的數的時候,注意溢出問題
//JDK7新特性,數字之間可以用下劃線分割
int money = 10_0000_0000;//輸出1000000000,下劃線不會被輸出
System.out.println(money);//輸出1000000000,下劃線不會被輸出
int years = 20;
int total = money*years;//-1474836480,計算的時候溢出了
long total2 = money*years;
System.out.println(total);//-1474836480,計算的時候溢出了
System.out.println(total2);//-1474836480,
//更換long沒用,years和money默認是int,計算完成後會轉化為int,所以結果會轉變為int
//轉換之前已經存在問題了
//解決辦法
long total3 = money*((long)years);//先把一個數轉換為long
System.out.println(total3);//20000000000
//大寫L和小寫l的區別,有些代碼把小寫l看成數字1
long jia = 10_0000_0000L;//數字後大寫L表示用的long
System.out.println(jia+1);
}
}
輸出:
1000000000
-1474836480
-1474836480
20000000000
1000000001
進程已結束,退出代碼為 0
本文介紹了Java中的類型轉換機制。主要內容包括:1) Java是強類型語言,不同類型運算時需要轉換;2) 類型轉換分為強制轉換(高轉低)和自動轉換(低轉高);3) 強制轉換可能導致內存溢出或精度損失;4) 布爾值不能轉換,對象類型不能轉不相干類型;5) 大數運算時要注意溢出問題,可通過提前轉換類型解決;6) JDK7支持數字用下劃線分割提高可讀性。文中通過多個代碼示例演示了類型轉換的具體應用和注意事項。