Java隱式類型轉換和強制類型轉換


 

一、強制類型轉換

char 和 整型之間的類型轉換

 1 char a7 = 'a';
 2 System.out.println(a7);
 3 
 4 System.out.println( (int)a7 );
 5 System.out.println( (byte)a7 );
 6 System.out.println( (short)a7 );
 7 
 8 int b1 = 101;
 9 System.out.println( (char)b1 );
10 System.out.println( (char)(b1 + 1) );

輸出:

a
97
97
97
e
f

 

下面這段代碼會把 26 個小寫字母對應的 int 值打印出來

1 char[] chs = {
2             'a','b','c','d','e','f','g','h','i','j','k','l','m',
3             'n','o','p','q','r','s','t','u','v','w','x','y','z'};
4 
5 for (int i = 0; i < chs.length; i++) {
6     System.out.println( (int)chs[i] );
7 }

 

 

二、隱式類型轉換

這是一個很經典的題目,先看代碼:

1 short a = 1;
2 short b = 2;
3 
4 short c = a + b;

答案是第4行代碼出現編譯錯誤:“可能損失精度”

原因:在進行 a + b 操作時,會把結果的類型“隱式”提升為 int 類型,此時再使用 short 類型的 c 變量引用時,就會出現“損失精度”

 

可以把 a + b 的結果強制轉換為 short 類型,但是可能導致數值精度發生錯誤。也就是說可以解決編譯期的錯誤,但是可能在運行期出現BUG

1 short a = 1;
2 short b = 2;
3 
4 // short c = (a + b);
5 short c = (short)(a + b);

 

還可以使用 int 或者 long 類型變量接收返回值

1 short a = 1;
2 short b = 2;
3 
4 int c = (a + b);

 


免責聲明!

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



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