最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java基礎(chǔ)之隱式轉(zhuǎn)換vs強制轉(zhuǎn)換

 更新時間:2015年12月28日 14:34:53   投稿:mrr  
這篇文章主要介紹了Java基礎(chǔ)之隱式轉(zhuǎn)換vs強制轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下

Java中,經(jīng)常可以遇到類型轉(zhuǎn)換的場景,從變量的定義到復(fù)制、數(shù)值變量的計算到方法的參數(shù)傳遞、基類與派生類間的造型等,隨處可見類型轉(zhuǎn)換的身影。Java中的類型轉(zhuǎn)換在Java編碼中具有重要的作用。

在定義變量時,有許多要注意的問題,一不小心就會出現(xiàn)損失精度或者不兼容類型等問題。

例如:

    1.定義長整型數(shù)據(jù)時,必須加后綴l或L

              long l =123456789012345L

    2.定義單精度類型時(7-8位有效數(shù)字),必須加后綴 f 或 F

              float f = 12.5F

          3. boolean類型不可以轉(zhuǎn)換為其它的數(shù)據(jù)類型。

這其中,我們常常會遇到數(shù)據(jù)類型的轉(zhuǎn)換問題,最為常見的要屬隱式轉(zhuǎn)換和強制轉(zhuǎn)換了,我們來分析一下。

隱式轉(zhuǎn)換

特征:

從小到大,可以隱式轉(zhuǎn)換,數(shù)據(jù)類型將自動提升。

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

注意:long是8個字節(jié),float是4個字節(jié)。

long是整數(shù),float是浮點型,整數(shù)和浮點數(shù)的存儲規(guī)則不一樣,記住一點long的范圍是小于float的。

例 :

byte a=10;
int b=a;

當(dāng)編譯intb=a 時,  a隱式轉(zhuǎn)換為int類型。

強制轉(zhuǎn)換

特征:

     從大到?。ㄈ绻忝鞔_知道數(shù)據(jù)是可以用該數(shù)據(jù)類型來表示的,可以用強制轉(zhuǎn)換)

格式:

    (轉(zhuǎn)換后的數(shù)據(jù)類型)變量或者值。

注:一般情況下,根本不推薦使用強制類型轉(zhuǎn)換。

           例1 :

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

當(dāng)編譯 byte b=(byte)a時, a被強制轉(zhuǎn)換為byte類型。

例2:

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

解析:

數(shù)據(jù)130默認的是int類型的十進制數(shù)據(jù),

第一步:十進制130轉(zhuǎn)換成二進制數(shù)據(jù)。

  10000010

第二步:130在內(nèi)存中的表示形式如下

原碼:0000000000000000 00000000 10000010

第三步:求int130的補碼

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

補碼:0000000000000000 00000000 10000010

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

(byte)130 的補碼為:10000010

第五步:把該補碼轉(zhuǎn)化為原碼。

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

反碼:10000001     (補碼-1)

原碼:11111110     (符號位不變,數(shù)據(jù)位取反)

轉(zhuǎn)化為十進制為 -126,所以最終打印-126。

     例3 :

shorts = 1;
s= s +1;   

shorts = 1;
s+=1;   

有問題嗎?為什么呢?

     解析:

第一程序會報錯:錯誤:不兼容的類型:從int轉(zhuǎn)換到short可能會有損失     

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

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

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

小結(jié):

數(shù)據(jù)類型轉(zhuǎn)換的問題如果發(fā)生在一些小程序上,我們或許能夠一眼看出,可是當(dāng)編寫一個龐大的系統(tǒng)時,擁有龐大數(shù)據(jù)量時,這些小小的問題可能導(dǎo)致系統(tǒng)出錯甚至崩潰,所以前期代碼編寫的嚴(yán)謹(jǐn)性就得靠我們自己把握了。

以上內(nèi)容給大家介紹了Java基礎(chǔ)之隱式轉(zhuǎn)換vs強制轉(zhuǎn)換,希望大家喜歡。

相關(guān)文章

  • Java中的泛型和泛型通配符詳解

    Java中的泛型和泛型通配符詳解

    這篇文章主要介紹了Java中的泛型和泛型通配符詳解,泛型的作用就是在編譯的時候能夠檢查類型安全,并且所有的強制轉(zhuǎn)換都是自動和隱式的在沒有泛型的情況的下,通過對類型Object的引用來實現(xiàn)參數(shù)的“任意化”,需要的朋友可以參考下
    2023-07-07
  • IDEA?高版本?PlantUML?插件默認主題修改的詳細過程

    IDEA?高版本?PlantUML?插件默認主題修改的詳細過程

    PlantUML 是非常不錯的使用腳本畫圖的工具,效率很高,很多人會選擇在 IDEA 中安裝 PlantUML Integration 插件,這篇文章主要介紹了IDEA?高版本?PlantUML?插件默認主題修改,需要的朋友可以參考下
    2022-09-09
  • SpringBoot實現(xiàn)統(tǒng)一功能處理的教程詳解

    SpringBoot實現(xiàn)統(tǒng)一功能處理的教程詳解

    這篇文章主要為大家詳細介紹了SpringBoot如何實現(xiàn)統(tǒng)一功能處理,文中的示例代碼講解詳細,對大家學(xué)習(xí)或工作有一定借鑒價值,感興趣的同學(xué)可以參考閱讀下
    2023-05-05
  • java對ArrayList排序代碼示例

    java對ArrayList排序代碼示例

    本文通過代碼示例給大家介紹java對arraylist排序,代碼簡潔易懂,感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11
  • jdk1.8的環(huán)境配置過程

    jdk1.8的環(huán)境配置過程

    Java平臺由Java虛擬機和Java應(yīng)用程序接口搭建,Java語言則是進入這個平臺的通道,用Java語言編寫并編譯的程序可以運行在這個平臺上,本文給大家講解jdk1.8的環(huán)境配置過程,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • Spring注解之@PropertySource詳解

    Spring注解之@PropertySource詳解

    這篇文章主要介紹了Spring注解之@PropertySource詳解,@PropertySource注解用于指定資源文件讀取的位置,它不僅能讀取properties文件,也能讀取xml文件,并且通過YAML解析器,配合自定義PropertySourceFactory實現(xiàn)解析YAML文件,需要的朋友可以參考下
    2023-11-11
  • Spring boot如何開啟跨域配置

    Spring boot如何開啟跨域配置

    這篇文章主要介紹了Spring boot如何開啟跨域配置問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java if-else 多重嵌套的優(yōu)化方式

    Java if-else 多重嵌套的優(yōu)化方式

    這篇文章主要介紹了Java if-else 多重嵌套的優(yōu)化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java ThreadLocal的詳細解釋

    Java ThreadLocal的詳細解釋

    這篇文章主要介紹了快速了解Java中ThreadLocal類,介紹了ThreadLocal 是什么,ThreadLocal的作用,ThreadLocal 原理等相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2021-11-11
  • java時間段查詢將00:00:00更換成23:59:59

    java時間段查詢將00:00:00更換成23:59:59

    本文主要介紹了java時間段查詢將00:00:00更換成23:59:59,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01

最新評論

呼和浩特市| 崇义县| 揭东县| 西丰县| 延吉市| 南昌市| 新泰市| 富平县| 广东省| 平潭县| 剑河县| 绩溪县| 武川县| 彰武县| 通江县| 通江县| 博客| 灵石县| 筠连县| 通化县| 合山市| 扬州市| 乐陵市| 广东省| 江西省| 积石山| 鲜城| 靖江市| 明光市| 玉树县| 高淳县| 庄河市| 茂名市| 平南县| 崇仁县| 盘山县| 德安县| 无为县| 青海省| 崇明县| 长葛市|