導航:首頁 > 編程語言 > java中類型強制轉換

java中類型強制轉換

發布時間:2023-02-05 16:53:42

1. java強制數據類型轉換

規則可不少,挺亂的其實:
強制數據類型轉換: int nowC = (int)c;
還可以這樣,使用intValue方法,返回一個int值:
Double d = 5 / 9.0 * (f - 32);
int nowC = d.intValue();
Double類是基本數據類型double所對應的包裝類。

基本數據類型轉換的規則:
Java中基本數據類型共有8種,其中boolean類型不能轉換為其它類型,其它類型也不能轉換為boolean型
除了boolean類型,還有7種,按照它們的容量(也就是表數范圍,就是能表示的數的大小范圍,比如char是0——65535)的大小,從小到大,排序依次為:
byte short char int long float double
1.容量小的向容量大的轉換,可以自動轉換,比如可以直接將一個int類型賦值給double:
double d = 34;
2.容量大的向容量小的轉換,必須強制類型轉換,就是你上面的那種形式,比如:
double c = 5/9.0 *(f - 32);
int nowC = (int)c;
3.整數類型常量默認為int類型,比如17
4.浮點類型常量默認為double類型,比如3.14
5.在多種數據類型混合運算時,容量小的自動轉換為整個表達式中容量最大的,然後再進行計算,比如:
int i = 9; float f = 4f; double d = 3.14; double dd = i+f+d;
此時,i和f都各自先轉換成double,在進行+運算。
6.在多種數據類型混合運算時,byte short char 3者不會互相轉換,他們各自轉換為int再進行計算
7.在有些時候,容量小的會自動提升為容量大的,比如方法重載傳參數時候,
但是byte 和 short 不會自動提升為char,其它類型按照我上面所述的順序提升。

差不多就這些,不明白補充,另外需要注意的是強轉雖然編譯沒問題,但是運行時,有可能會數據溢出,損失精度

2. JAVA如何進行強制類型轉換

如果這2種類型是兼容的,那麼Java 將自動地進行轉換。

3. java中的強制類型轉換

用(String)做強制類型轉換和用String.valueOf()區別在於:

String 就是直接強制轉化成String型的字元串,且有優先順序限制,像int i=123;不能String s=(String)i。

而String.valueOf()裡面的參數轉換可以是double、long、char[] 、long等等,沒限制,所以String s=String.valueOf(i)。

toString()方法返回的是這個對象的字元串表示,就像是這個對象的名字一樣,任何對象都可以有自己的名字,你可以重寫其toString()方法,給其賦予任意的名字。

但是調用toString()方法的對象不能為 null,否則會拋出異常:java.lang.NullPointerException。

例子如下:

(3)java中類型強制轉換擴展閱讀:

java中強制類型轉換

在Java中強制類型轉換分為基本數據類型和引用數據類型兩種,這里我們討論的後者,也就是引用數據類型的強制類型轉換。

在Java中由於繼承和向上轉型,子類可以非常自然地轉換成父類,但是父類轉換成子類則需要強制轉換。

因為子類擁有比父類更多的屬性、更強的功能,所以父類轉換為子類需要強制。那麼,是不是只要是父類轉換為子類就會成功呢?其實不然,他們之間的強制類型轉換是有條件的。

當我們用一個類型的構造器構造出一個對象時,這個對象的類型就已經確定的,也就說它的本質是不會再發生變化了。

在Java中我們可以通過繼承、向上轉型的關系使用父類類型來引用它,這個時候我們是使用功能較弱的類型引用功能較強的對象,這是可行的。但是將功能較弱的類型強制轉功能較強的對象時,就不一定可以行了。

舉個例子來說明。比如系統中存在Father、Son兩個對象。首先我們先構造一個Son對象,然後用一個Father類型變數引用它:

Father father = new Son();

在這里Son 對象實例被向上轉型為father了,但是請注意這個Son對象實例在內存中的本質還是Son類型的,只不過它的能力臨時被消弱了而已,如果我們想變強怎麼辦?將其對象類型還原!

Son son = (Son)father;

這條語句是可行的,其實father引用仍然是Father類型的,只不過是將它的能力加強了,將其加強後轉交給son引用了,Son對象實例在son的變數的引用下,恢復真身,可以使用全部功能了。

前面提到父類強制轉換成子類並不是總是成功,那麼在什麼情況下它會失效呢?

當引用類型的真實身份是父類本身的類型時,強制類型轉換就會產生錯誤。例如:

Father father = new Father();

Son son = (Son) father;

這個系統會拋出ClassCastException異常信息。

所以編譯器在編譯時只會檢查類型之間是否存在繼承關系,有則通過;而在運行時就會檢查它的真實類型,是則通過,否則拋出ClassCastException異常。

所以在繼承中,子類可以自動轉型為父類,但是父類強制轉換為子類時只有當引用類型真正的身份為子類時才會強制轉換成功,否則失敗

4. Java強制類型轉換

原因有如下:

  1. Object數組中可以存儲int ,string, class等類型,對於計算機來說它不清楚用戶最終存儲的是什麼類型的數據,例如可以存儲:

    mm[0] = new String("123");
    mm[1] = new MyClass();

  2. 如果存儲以上數據類型,那麼你強制轉換就是失敗的,Object數組存儲未知類型,所以無法強制轉換某一固定類型的數據,強制轉換就會異常。

  3. 針對Object數組中某一個具體數據進行強制轉換時,可以根據存儲的實際類型進行轉換處理,能夠正常進行,所以是正確的。

  4. 以上的說明希望你能明白。

閱讀全文

與java中類型強制轉換相關的資料

熱點內容
卡耐基pdf下載 瀏覽:922
現在最流行的單片機 瀏覽:88
機頂盒刷機源碼 瀏覽:985
編碼pdf下載 瀏覽:944
隔壁同學app怎麼 瀏覽:299
c語言宏命令 瀏覽:542
php卡死源碼 瀏覽:574
time庫中的clock函數python 瀏覽:989
cad視覺移動命令怎麼打開 瀏覽:821
安卓java調用python 瀏覽:395
java標准時間 瀏覽:137
華為伺服器湖北渠道商雲主機 瀏覽:30
韓式面部護理解壓視頻 瀏覽:301
pdf換成jpg圖片 瀏覽:897
dh加密演算法 瀏覽:107
安卓手機如何隱藏微信信息提示 瀏覽:632
nodejs解壓縮 瀏覽:262
直流雙轉子壓縮機 瀏覽:952
pythonxmlstring 瀏覽:822
用私鑰加密之後可以用公鑰解密 瀏覽:788