欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解解密Java中的類型轉換問題

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

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

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

intintScore = 96;
doubledoubleScore = intScore;

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

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

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

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

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

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

float floatWeight = 63.5f;

當然,你也可以強制轉換成float類型:

float floatWeight = (float)63.5;

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

同理:

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

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

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

以上代碼的輸出結果是:

b = -106
d = 75

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

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

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

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

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

相關文章

  • Spring?Boot?Admin?添加報警提醒和登錄驗證功能的具體實現(xiàn)

    Spring?Boot?Admin?添加報警提醒和登錄驗證功能的具體實現(xiàn)

    報警提醒功能是基于郵箱實現(xiàn)的,當然也可以使用其他的提醒功能,如釘釘或飛書機器人提醒也是可以的,但郵箱報警功能的實現(xiàn)成本最低,所以本文我們就來看郵箱的報警提醒功能的具體實現(xiàn)
    2022-01-01
  • SpringBoot集成Shiro進行權限控制和管理的示例

    SpringBoot集成Shiro進行權限控制和管理的示例

    這篇文章主要介紹了SpringBoot集成Shiro進行權限控制和管理的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • SpringBoot集合Mybatis過程解析

    SpringBoot集合Mybatis過程解析

    這篇文章主要介紹了SpringBoot集合Mybatis過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • Java socket通訊實現(xiàn)過程及問題解決

    Java socket通訊實現(xiàn)過程及問題解決

    這篇文章主要介紹了Java socket通訊實現(xiàn)過程及問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • java中enum的用法

    java中enum的用法

    這篇文章主要介紹了java中enum的用法,包括了枚舉類型的基本定義及用法分析,對于學習Java有著一定的學習與借鑒價值,需要的朋友可以參考下
    2014-11-11
  • Java正確使用訪問修飾符的姿勢

    Java正確使用訪問修飾符的姿勢

    訪問修飾符是Java語法中很基礎的一部分,但是能正確的使用Java訪問修飾符的程序員只在少數(shù),下面這篇文章主要給大家介紹了關于Java正確使用訪問修飾符的姿勢,需要的朋友可以參考下
    2021-11-11
  • 如何從eureka獲取服務的ip和端口號進行Http的調(diào)用

    如何從eureka獲取服務的ip和端口號進行Http的調(diào)用

    這篇文章主要介紹了如何從eureka獲取服務的ip和端口號進行Http的調(diào)用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • springBoot整合jwt實現(xiàn)token令牌認證的示例代碼

    springBoot整合jwt實現(xiàn)token令牌認證的示例代碼

    實施Token驗證的方法挺多的,還有一些標準方法,比如JWT,本文主要介紹了springBoot整合jwt實現(xiàn)token令牌認證的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • Java 是如何讀取和寫入瀏覽器Cookies的實例詳解

    Java 是如何讀取和寫入瀏覽器Cookies的實例詳解

    這篇文章主要介紹了Java 是如何讀取和寫入瀏覽器Cookies的實例的相關資料,需要的朋友可以參考下
    2016-09-09
  • elasticsearch集群查詢超10000的解決方案

    elasticsearch集群查詢超10000的解決方案

    ES為了避免用戶的過大分頁請求造成ES服務所在機器內(nèi)存溢出,默認對深度分頁的條數(shù)進行了限制,默認的最大條數(shù)是10000條,這篇文章主要給大家介紹了關于elasticsearch集群查詢超10000的解決方案,需要的朋友可以參考下
    2024-08-08

最新評論