日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java基本数据类型的自动转换_彻底理解Java中的基本数据类型转换(自动、强制、提升)...

發布時間:2025/3/17 java 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基本数据类型的自动转换_彻底理解Java中的基本数据类型转换(自动、强制、提升)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說基本數據類型轉換之前,先了解下 Java 中的 8 種基本數據類型,以及它們的占內存的容量大小和表示的范圍,如下圖所示。

重新溫故了下原始數據類型,現在來解釋下它們之間的轉換關系。

自動類型轉換

自動類型轉換是指:數字表示范圍小的數據類型可以自動轉換成范圍大的數據類型。

如:

long l = 100;

int i = 200;

long ll = i;

具體自動轉換如如下圖所示。

實線表示自動轉換時不會造成數據丟失,虛線則可能會出現數據丟失問題。

自動轉換也要小心數據溢出問題,看下面的例子。

int count = 100000000;

int price = 1999;

long totalPrice = count * price;

編譯沒任何問題,但結果卻輸出的是負數,這是因為兩個 int 相乘得到的結果是 int, 相乘的結果超出了 int 的代表范圍。這種情況,一般把第一個數據轉換成范圍大的數據類型再和其他的數據進行運算。

int count = 100000000;

int price = 1999;

long totalPrice = (long) count * price;

另外,向下轉換時可以直接將 int 常量字面量賦值給 byte、short、char 等數據類型,而不需要強制轉換,只要該常量值不超過該類型的表示范圍都能自動轉換。

強制類型轉換

強制類型轉換我們再清楚不過了,即強制顯示的把一個數據類型轉換為另外一種數據類型。

如:

short s = 199;

int i = s;// 199

double d = 10.24;

long ll = (long) d;// 10

以上的轉換結果都在我們的預期之內,屬于正常的轉換和丟失精度的情況,下面的例子就一樣屬于數據溢出的情況。

int ii = 300;

byte b = (byte)ii;

300 已經超出了 byte 類型表示的范圍,所以會轉換成一個毫無意義的數字。

類型提升

所謂類型提升就是指在多種不同數據類型的表達式中,類型會自動向范圍表示大的值的數據類型提升。

把上面的溢出的例子再改下。

long count = 100000000;

int price = 1999;

long totalPrice = price * count;

price 為 int 型,count 為 long 型,運算結果為 long 型,運算結果正常,沒有出現溢出的情況。

掃描關注我們的微信公眾號,干貨每天更新。

新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的Java基本数据类型的自动转换_彻底理解Java中的基本数据类型转换(自动、强制、提升)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。