程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java基本之隱式轉換vs強迫轉換

Java基本之隱式轉換vs強迫轉換

編輯:關於JAVA

Java基本之隱式轉換vs強迫轉換。本站提示廣大學習愛好者:(Java基本之隱式轉換vs強迫轉換)文章只能為提供參考,不一定能成為您想要的結果。以下是Java基本之隱式轉換vs強迫轉換正文


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強迫轉換,願望年夜家愛好。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved