java的自动类型转换和强制类型转换
????在程序運(yùn)行時(shí),經(jīng)常需要將一種數(shù)值類型進(jìn)行轉(zhuǎn)換成另一種類型。下面給出了一個(gè)合法的轉(zhuǎn)換。
? ??數(shù)值之間的合法轉(zhuǎn)換
????
? ? 上圖中有6個(gè)實(shí)心箭頭,表示無信息丟失的轉(zhuǎn)換,有三個(gè)虛箭頭,表示可能有精度丟失的轉(zhuǎn)換。例如123456789是一個(gè)大整數(shù),它所包含的整數(shù)比float類型所能表達(dá)的位數(shù)要多,當(dāng)把這個(gè)整數(shù)轉(zhuǎn)換為float時(shí),將會(huì)得到通道大小的結(jié)果,但會(huì)丟失精度!
????
? ?強(qiáng)制類型轉(zhuǎn)換
????在有的情況下,int類型的值將會(huì)自動(dòng)的轉(zhuǎn)為double類型,但另一方面,有時(shí)候也需要將double轉(zhuǎn)為int類型。在java中,允許這種數(shù)值之間的轉(zhuǎn)換。當(dāng)然,這樣會(huì)丟失一些信息。在這種情況下需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換(cast)實(shí)現(xiàn)這個(gè)操作,強(qiáng)制類型轉(zhuǎn)換的語法格式是在圓括號(hào)給出想要轉(zhuǎn)換的目標(biāo)類型。后面緊跟待轉(zhuǎn)換的變量名。例如:
????double x = 9.91;
????int nx=(int)x;
????
????這樣,nx的值為9,強(qiáng)制類型轉(zhuǎn)換通過截?cái)嘈〔糠謱⒏↑c(diǎn)值轉(zhuǎn)為×××。
????如果想對(duì)浮點(diǎn)數(shù)進(jìn)行四舍五入計(jì)算。以便得到最接近的整數(shù)。(在很多情況下,需要使用這種操作方式。),那就需要使用Math.round方法:
????double x = 9.91;
????int nx=(int)Math.round(x);
????現(xiàn)在,nx的值為10.當(dāng)調(diào)用round的時(shí)候。仍然需要使用強(qiáng)制轉(zhuǎn)換(int)。其原因是round方法返回的結(jié)果是long類型,由于存在信息丟失的可能性。所以只有使用顯式的強(qiáng)制類型轉(zhuǎn)換才能將long類型轉(zhuǎn)換為int類型。
????
轉(zhuǎn)載于:https://blog.51cto.com/9497786/1752446
總結(jié)
以上是生活随笔為你收集整理的java的自动类型转换和强制类型转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2、Sprite,SpriteBatch
- 下一篇: 百度地图定位地址为空