Java基礎之隱式轉換vs強制轉換_java

來源:互聯網
上載者:User

Java中,經常可以遇到類型轉換的情境,從變數的定義到複製、數值變數的計算到方法的參數傳遞、基類與衍生類別間的造型等,隨處可見類型轉換的身影。Java中的類型轉換在Java編碼中具有重要的作用。

在定義變數時,有許多要注意的問題,一不小心就會出現損失精度或者不相容類型等問題。

例如:

    1.定義長整型資料時,必須加尾碼l或L

              long l =123456789012345L

    2.定義單精確度類型時(7-8位有效數字),必須加尾碼 f 或 F

              float f = 12.5F

          3. boolean類型不可以轉換為其它的資料類型。

這其中,我們常常會遇到資料類型的轉換問題,最為常見的要屬隱式轉換和強制轉換了,我們來分析一下。

隱式轉換

特徵:

從小到大,可以隱式轉換,資料類型將自動提升。

byte,short,char -->int  -->long -->float -->double

注意:long是8個位元組,float是4個位元組。

long是整數,float是浮點型,整數和浮點數的儲存規則不一樣,記住一點long的範圍是小於float的。

例 :

byte a=10;
int b=a;

當編譯intb=a 時,  a隱式轉換為int類型。

強制轉換

特徵:

     從大到小(如果你明確知道資料是可以用該資料類型來表示的,可以用強制轉換)

格式:

    (轉換後的資料類型)變數或者值。

註:一般情況下,根本不推薦使用強制類型轉換。

           例1 :

int a=10;byte b=(byte)a;

當編譯 byte b=(byte)a時, a被強制轉換為byte類型。

例2:

class QiangZhiDemo {   public static void main(String[] args)   {     byte b=(byte)130;     System.out.println(b); //列印結果-126   }   } 

解析:

資料130預設的是int類型的十進位資料,

第一步:十進位130轉換成位元據。

  10000010

第二步:130在記憶體中的表示形式如下

原碼:0000000000000000 00000000 10000010

第三步:求int130的補碼

因為130是正數,所以,反碼和補碼都和原碼一致。

補碼:0000000000000000 00000000 10000010

第四步:對補碼進行截取,只剩下最後8位。

(byte)130 的補碼為:10000010

第五步:把該補碼轉化為原碼。

由於符號位(第一位)是1,故該數為負數,

反碼:10000001     (補碼-1)

原碼:11111110     (符號位不變,資料位元取反)

轉化為十進位為 -126,所以最終列印-126。

     例3 :

shorts = 1;s= s +1;   

和

shorts = 1;s+=1;   

有問題嗎?為什麼呢?

     解析:

第一程式會報錯:錯誤:不相容的類型:從int轉換到short可能會有損失     

原因:s=s+1;s+1會隱式轉換為int類型,當把一個int類型賦值給short類型是,可能會損失。

第二個程式可以編譯運行。    

原因:s+=1,雖然可以看做s=s+1,但是還是有區別的,s+=1中有一個強制轉換,即s=(short)(s+1),會把s+1的值強制轉換為short類型,故不會報錯。

小結:

資料類型轉換的問題如果發生在一些小程式上,我們或許能夠一眼看出,可是當編寫一個龐大的系統時,擁有龐大資料量時,這些小小的問題可能導致系統出錯甚至崩潰,所以前期代碼編寫的嚴謹性就得靠我們自己把握了。

以上內容給大家介紹了Java基礎之隱式轉換vs強制轉換,希望大家喜歡。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.