欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

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

創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)全網(wǎng)整合營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、揭陽(yáng)網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)商城網(wǎng)站定制開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為揭陽(yáng)等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

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

intintScore = 96;
doubledoubleScore = intScore;

那么如果試圖把寬的數(shù)據(jù)類(lèi)型(如double)轉(zhuǎn)換成窄的數(shù)據(jù)類(lèi)型(如float)時(shí),編譯器會(huì)提示編譯錯(cuò)誤,想要編譯通過(guò),需要進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換。那么,此時(shí)的數(shù)據(jù)會(huì)發(fā)生截?cái)唷.a(chǎn)生的結(jié)果是:

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

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

對(duì)于上述第1種情況,比較好理解,我們來(lái)看個(gè)例子:

float floatWeight= 63.5; //編譯錯(cuò)誤
double doubleWeight= 63.5;

上述第一條語(yǔ)句會(huì)提示編譯錯(cuò)誤,那是因?yàn)榫幾g器看到63.5時(shí),會(huì)把它當(dāng)做一個(gè)double類(lèi)型,把一個(gè)double類(lèi)型賦給float類(lèi)型,當(dāng)然編譯不通過(guò)了。推薦的解決方案是:

float floatWeight = 63.5f;

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

float floatWeight = (float)63.5;

其實(shí),上述語(yǔ)句本質(zhì)是把double類(lèi)型的數(shù)據(jù)強(qiáng)制轉(zhuǎn)換成float類(lèi)型,發(fā)生了截?cái)唷km然數(shù)據(jù)的大小沒(méi)有變化,但是數(shù)據(jù)的精度卻降低了。

同理:

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

現(xiàn)在,問(wèn)題來(lái)了,既然是截?cái)啵趺磿?huì)產(chǎn)生溢出呢?我們先來(lái)看個(gè)例子:

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é)果,不免會(huì)問(wèn)為什么b=-106呢?這是因?yàn)閺?qiáng)制轉(zhuǎn)換時(shí)發(fā)生溢出。由于150超出了byte能夠表示的最大范圍(-128 ~ 127)。

那么-106又是如何得來(lái)的呢?

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

至此,也就解釋了為什么截?cái)嘁部赡軙?huì)發(fā)生溢出。

以上所述是小編給大家介紹的Java中的類(lèi)型轉(zhuǎn)換問(wèn)題詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)創(chuàng)新互聯(lián)網(wǎng)站的支持!

當(dāng)前標(biāo)題:詳解解密Java中的類(lèi)型轉(zhuǎn)換問(wèn)題
本文地址:http://www.chinadenli.net/article28/jigdcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶(hù)體驗(yàn)網(wǎng)站設(shè)計(jì)公司域名注冊(cè)自適應(yīng)網(wǎng)站網(wǎng)站收錄小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管