java 類型轉換:編譯錯誤、運行時錯誤


1.如果兩種類型是“兼容的”(數字、字符、布爾類型互不兼容),或“目的類型的范圍比來源范圍大”自動執行類型轉換。
 
2.數值類型按范圍大小為:byte、short、char、int、long、float、double。
 
3.子類可以非常容易地轉為父類,是安全的,為功能較強的類型轉換為功能較弱的類型,是用父類引用指向子類。
 
4.父類到子類需要強制轉換,是不安全的,最好用instanceof檢查一下,為功能較弱的類型轉換為功能較強的類型,是用子類引用指向父類。(只有父類對象本身就是用子類new出來的時候, 才可以在將來被強制轉換為子類對象。)
 
5.當用一個類型的構造器,new出一個對象時,這個對象的類型就確定了。
 
6.注意:如果不具有繼承關系,就進行強制轉換,則會在編譯時出錯。
 
7.如果將int型轉為byte型,int型取值范圍大於byte型,它的值將堆byte型范圍進行取模。
 
8.而把浮點型賦值給整數型,就會出現截斷,截取掉小數部分。
 
9.short s = 1;s = s +1;進行這個運算的時候,會把s+1的結果轉為int。
 
10.short s = 1;s += 1;這個會把s +=1的結果轉為short,
 
11. 對於自動裝箱和自動拆箱,將一個基本數據類型轉換為對應的引用類型時,不必強制轉換。將一個基本數據類型的引用類型轉換為基本數據類型時,也不必要強制轉換。
 
12.三木運算會按照提升原則將兩端操作提升至同一類型,如果兩端有一個操作數是引用類型,則整個表達式結果用Object型表示。
 
13.JVM中:對於強制類型轉換,且是引用類型,如果是父類向子類轉換,這種只牽扯到引用名義類型的轉換,具體的內存沒有什么變化。
 
14.而基本類型轉換不同,數據發生了變化。但是基本數據類型不是對象,如果涉及到自動裝箱和拆箱,實際上是調用類似Integer.parseInt()和Integer.valueOf()實現。
 
15.父類向子類強制轉換,如果成功不會有任何數據丟失,如果不是子類,那么會報錯。基本類型之間的轉換,如果是大范圍向小范圍的轉換,有可能發生數據丟失或者精確丟失。
 
 
 


免責聲明!

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



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