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

詳解解密Java中的類型轉(zhuǎn)換問題

 更新時間:2019年03月21日 16:02:33   作者:bddylww  
這篇文章主要介紹了Java中的類型轉(zhuǎn)換問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

眾所周知Java中的數(shù)據(jù)類型是強數(shù)據(jù)類型,基本數(shù)據(jù)類型之間的轉(zhuǎn)換尤其固定的規(guī)則,當(dāng)數(shù)據(jù)寬度比較窄的數(shù)據(jù)類型(如int)轉(zhuǎn)換成數(shù)據(jù)類型比較寬的數(shù)據(jù)類型時(如double),則窄的數(shù)據(jù)類型會加寬,可以完成自動類型轉(zhuǎn)換,這稱為隱式轉(zhuǎn)換。

如:以下代碼沒有任何問題,結(jié)果也是正確的,成績不會發(fā)生變化,所不同的是成績的精度提高了。

intintScore = 96;
doubledoubleScore = intScore;

那么如果試圖把寬的數(shù)據(jù)類型(如double)轉(zhuǎn)換成窄的數(shù)據(jù)類型(如float)時,編譯器會提示編譯錯誤,想要編譯通過,需要進行強制類型轉(zhuǎn)換。那么,此時的數(shù)據(jù)會發(fā)生截斷。產(chǎn)生的結(jié)果是:

1. 數(shù)據(jù)正確,只是精度降低了;

2. 數(shù)據(jù)不正確,發(fā)生了溢出;

對于上述第1種情況,比較好理解,我們來看個例子:

float floatWeight= 63.5; //編譯錯誤
double doubleWeight= 63.5;

上述第一條語句會提示編譯錯誤,那是因為編譯器看到63.5時,會把它當(dāng)做一個double類型,把一個double類型賦給float類型,當(dāng)然編譯不通過了。推薦的解決方案是:

float floatWeight = 63.5f;

當(dāng)然,你也可以強制轉(zhuǎn)換成float類型:

float floatWeight = (float)63.5;

其實,上述語句本質(zhì)是把double類型的數(shù)據(jù)強制轉(zhuǎn)換成float類型,發(fā)生了截斷。雖然數(shù)據(jù)的大小沒有變化,但是數(shù)據(jù)的精度卻降低了。

同理:

doubleWeight = floatWeight; //隱式轉(zhuǎn)換
floatWeight = (float)doubleWeight;//強制轉(zhuǎn)換

現(xiàn)在,問題來了,既然是截斷,怎么會產(chǎn)生溢出呢?我們先來看個例子:

shorti = 150;
shortj = 75;
byteb = (byte) i; 
byted = (byte) j; 
System.out.println("b = " + b);
System.out.println("d = " + d);

以上代碼的輸出結(jié)果是:

b = -106
d = 75

看到結(jié)果,不免會問為什么b=-106呢?這是因為強制轉(zhuǎn)換時發(fā)生溢出。由于150超出了byte能夠表示的最大范圍(-128 ~ 127)。

那么-106又是如何得來的呢?

i = 150,用二進制表示i = 0000 0000 1001 0110,short類型占2個字節(jié),16位,最高位的0表示正數(shù)。當(dāng)把i強制轉(zhuǎn)換成byte類型時,高位發(fā)生截斷,i = 1001 0110。在計算機中,用補碼表示,最高位的1表示負數(shù),那么用原碼表示的話:i = 1110 1010,正好表示十進制數(shù)-106。

至此,也就解釋了為什么截斷也可能會發(fā)生溢出。

以上所述是小編給大家介紹的Java中的類型轉(zhuǎn)換問題詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java超詳細講解設(shè)計模式之一的單例模式

    Java超詳細講解設(shè)計模式之一的單例模式

    單例模式(Singleton Pattern)是 Java 中最簡單的設(shè)計模式之一。這種類型的設(shè)計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式
    2022-03-03
  • Java構(gòu)造函數(shù)的相互調(diào)用代碼示例

    Java構(gòu)造函數(shù)的相互調(diào)用代碼示例

    這篇文章主要介紹了Java構(gòu)造函數(shù)的相互調(diào)用代碼示例,分享了兩段代碼示例,通過this關(guān)鍵字實現(xiàn)對的構(gòu)造函數(shù)的調(diào)用,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • IDEA中maven無法下載源碼的解決方法

    IDEA中maven無法下載源碼的解決方法

    這篇文章主要為大家詳細介紹了當(dāng)IDEA中maven無法下載源碼時改如何解決,文中通過圖文為大家進行了詳細講解,需要的小伙伴可以參考一下
    2023-08-08
  • MyBatis-Plus高級擴展詳解

    MyBatis-Plus高級擴展詳解

    本文介紹了MyBatis-Plus中邏輯刪除和樂觀鎖的實現(xiàn)概念、方法和示例,邏輯刪除通過更改記錄狀態(tài)模擬刪除,而樂觀鎖通過版本號或時間戳確保并發(fā)操作的正確性
    2025-03-03
  • java如何消除太多的if else判斷示例代碼

    java如何消除太多的if else判斷示例代碼

    這篇文章主要介紹了java如何消除太多的if else判斷,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Java 中通過 key 獲取鎖的方法

    Java 中通過 key 獲取鎖的方法

    這篇文章主要介紹了Java 中通過 key 獲取鎖,本文演示如何對某個 key 加鎖,以保證對該 key 的并發(fā)操作限制,可以實現(xiàn)同一個 key 一個或者多個線程同時執(zhí)行,需要的朋友可以參考下
    2022-11-11
  • @valid 無法觸發(fā)BindingResult的解決

    @valid 無法觸發(fā)BindingResult的解決

    這篇文章主要介紹了@valid 無法觸發(fā)BindingResult的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 關(guān)于java的九個預(yù)定義Class對象

    關(guān)于java的九個預(yù)定義Class對象

    這篇文章主要介紹了關(guān)于java的九個預(yù)定義Class對象,在Java中,沒有類就無法做任何事情。然而,并不是所有的類都具有面向?qū)ο筇卣?。如Math.random,并只需要知道方法名和參數(shù),需要的朋友可以參考下
    2023-05-05
  • Java版本的回文字算法(java版本)

    Java版本的回文字算法(java版本)

    本文給大家分享一段java代碼關(guān)于回文字算法的實例代碼,代碼簡單易懂,需要的朋友一起看看吧
    2016-10-10
  • Java如何把文件夾打成壓縮包并導(dǎo)出

    Java如何把文件夾打成壓縮包并導(dǎo)出

    這篇文章主要介紹了Java如何把文件夾打成壓縮包并導(dǎo)出,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評論

瑞丽市| 黑水县| 定兴县| 白城市| 雅安市| 柘城县| 合川市| 无锡市| 根河市| 十堰市| 宜兴市| 沙坪坝区| 中江县| 密云县| 平潭县| 来宾市| 万全县| 文昌市| 尉犁县| 梅河口市| 峨眉山市| 大港区| 富源县| 东兴市| 都江堰市| 德庆县| 什邡市| 遵义县| 万全县| 晋江市| 南川市| 新龙县| 峨边| 吴堡县| 盐源县| 明光市| 宜良县| 汤阴县| 饶河县| 通辽市| 泸溪县|