第三次学JAVA再学不好就吃翔(part5)--基础语法之数据类型转换
生活随笔
收集整理的這篇文章主要介紹了
第三次学JAVA再学不好就吃翔(part5)--基础语法之数据类型转换
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
學(xué)習(xí)筆記,僅供參考
文章目錄
- JAVA基礎(chǔ)語法
- 數(shù)據(jù)類型轉(zhuǎn)換之隱式轉(zhuǎn)換
- 數(shù)據(jù)類型轉(zhuǎn)換之強(qiáng)制轉(zhuǎn)換
JAVA基礎(chǔ)語法
數(shù)據(jù)類型轉(zhuǎn)換之隱式轉(zhuǎn)換
byte類型轉(zhuǎn)換為int類型
class TypeConvertTest {public static void main(String[] args) {int x = 3;byte b = 5;x = x + b;System.out.println(x); // int類型 + byte類型 -> int類型} }這里byte類型的b與int類型的x相加時(shí),b先將自己提升為int類型,再與x相加,得到int類型的結(jié)果,最后賦值給x。
這就是隱式轉(zhuǎn)換,當(dāng)小的數(shù)據(jù)類型(比如byte)與大的數(shù)據(jù)類型(比如int)相加時(shí),小的數(shù)據(jù)類型會(huì)自動(dòng)提升為大的數(shù)據(jù)類型。
數(shù)據(jù)類型轉(zhuǎn)換之強(qiáng)制轉(zhuǎn)換
如果我們這樣寫代碼,會(huì)得到怎樣的結(jié)果呢?
class TypeConvertTest {public static void main(String[] args) {int x = 3;byte b = 5;b = x + b;System.out.println(b);} }結(jié)果:
---------- javac ---------- TypeConvertTest.java:5: 錯(cuò)誤: 不兼容的類型: 從int轉(zhuǎn)換到byte可能會(huì)有損失b = x + b;^ 1 個(gè)錯(cuò)誤Output completed (5 sec consumed) - Normal Termination程序在編譯時(shí)報(bào)錯(cuò)了!這是為啥呢?因?yàn)閤 + b得到的結(jié)果是一個(gè)int 類型,這時(shí)我們用byte類型的b去接收這個(gè)結(jié)果,可能會(huì)導(dǎo)致精度的損失。
但是我就是想轉(zhuǎn)換,可咋整呢?
那我們就進(jìn)行強(qiáng)制轉(zhuǎn)換
class TypeConvertTest {public static void main(String[] args) {int x = 3;byte b = 5;b = (byte)(x + b);System.out.println(b); // int類型 + byte類型 = int類型} }結(jié)果:
8- 強(qiáng)制類型轉(zhuǎn)換注意事項(xiàng)
如果超出了被賦值的數(shù)據(jù)類型的取值范圍,強(qiáng)轉(zhuǎn)得到的結(jié)果可能會(huì)由于精度的損失,與我們期望的結(jié)果不同 。
class TypeConvertTest {public static void main(String[] args) {byte b = (byte)(126 + 4);System.out.println(b); // int類型 + byte類型 = int類型} }輸出:
-126圖解:
126 + 4 = 130 00000000 00000000 00000000 10000010 //130的二進(jìn)制 如果我們進(jìn)行強(qiáng)制類型轉(zhuǎn)換,將int轉(zhuǎn)換為byte類型,則前3個(gè)8位將被砍掉 10000010 //byte類型 由于我們運(yùn)算時(shí)是用補(bǔ)碼進(jìn)行運(yùn)算的,所以上面這個(gè)是補(bǔ)碼,我們需要將其轉(zhuǎn)換為原碼 10000010 --反碼--> 10000001 --原碼--> 11111110 可以看到這個(gè)byte類型的數(shù)據(jù)是-126總結(jié)
以上是生活随笔為你收集整理的第三次学JAVA再学不好就吃翔(part5)--基础语法之数据类型转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上海二套房贷款利率
- 下一篇: JAVA面试题(part1)--变量相加