Java強制轉換數據類型


執行結果截圖:

 

 代碼:

public class MandatoryConvert {
public static void main(String[] args) {
int i1 = 128;

// int強制轉換為byte(高容量轉低容量)是強制轉換,但是可能導致內存溢出
byte b = (byte)i1;

// int能強制轉換為浮點double
// 不能強制轉換為布爾值,例如int i,然后boolean d = i; 會報錯
double d1 = i1;
double d2 = 23.7;
float d3 = -45.89f;

System.out.println(i1);
System.out.println(b);
System.out.println(d1);

// double類型被強制轉換為int類型,高轉低,小數點后的數值被截掉
System.out.println((int)d2);

// float類型被強制轉換為int類型,高轉低,小數點后的數值被截掉
System.out.println((int)d3);

System.out.println("==========================");

// c1是字符類型。注意:字符其實是以int類型存儲的,字符a對應的Unicode值是整數97
char c1 = 'a';

// 此處的c1因為要進行+1運算,1默認是int類型,那么c1就會被強制轉換為字符a所對應的Unicode值(int類型)97,那么和1相加的結果就是97+1=98
int d4 = c1 + 1;

// 輸出d4的值,應該是98
System.out.println(d4);

// 將d5強制轉換為字符,此時d4的值是98,對應Unicode表的b,所以打印的是字符b
System.out.println((char)d4);

System.out.println("==========================");

// 操作比較大的數時要注意溢出問題。JDK7及更高版本的新特性,為方便閱讀大數值,數字之間可以用下划線分隔
int money = 10_0000_0000;
int years = 20;

// 相乘的結果默認是int類型, 值太大會內存溢出
int total1 = money * years;

// 由於money和years都是int類型,因此money*years的結果默認是int,還沒來得及賦值給total2(大容量的long類型),內存就已經先溢出了
long total2 = money * years;

// 把years強制轉換為long,money*years的結果就默認是long,內存就不會溢出了
long total3 = money * (long)years;

// 把money強制轉換為long,money*years的結果就默認是long,內存就不會溢出了
long total4 = (long)money * years;
System.out.println(money);
System.out.println(years);

// 內存溢出,輸出值錯誤
System.out.println(total1);

// 內存溢出,輸出值錯誤
System.out.println(total2);

// 內存未溢出,輸出值正確
System.out.println(total3);
System.out.println(total4);
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM