Java里a和b哪个大_Java中 a+=b和a=a+b有什么区别?
在java語言中,a+=b和a=a+b的主要區(qū)別是在運(yùn)算的精度上。類似的有“-= 、 *= 、/= 、%= ”,這里以a+=b 與 a=a+b 舉例說明一下。
1.下面是一串代碼,我們試一下a=a+b的形式:
public class TestDemo {
public static void main(String[] args) {
byte a=1;
a=a+4;
System.out.println(a);
}
}
從圖中可以看出出現(xiàn)了錯(cuò)誤,根本無法運(yùn)行。報(bào)錯(cuò)原因我也貼出來了,說是“類型不匹配:不能從int轉(zhuǎn)換為byte”,
這里因?yàn)閍是byte類型,而數(shù)字4默認(rèn)是int 類型。在java中,在a+4時(shí),會(huì)進(jìn)行 自動(dòng)類型轉(zhuǎn)換 ,所以a+4 會(huì)轉(zhuǎn)換成int類型。而變量a還是byte類型,將int 類型的a+4賦值給byte類型的a ,無疑會(huì)報(bào)錯(cuò)。
當(dāng)然,我們也可以進(jìn)行強(qiáng)類型轉(zhuǎn)換,將已經(jīng)轉(zhuǎn)換成int類型的a+4強(qiáng)制轉(zhuǎn)換為byte類型,這樣也是可以的。但是這種轉(zhuǎn)換可能會(huì)導(dǎo)致溢出或者精度的下降,如果容忍可能出現(xiàn)的誤差,可以使用這種轉(zhuǎn)換。
下面是轉(zhuǎn)換的結(jié)果:
publicclass TestDemo {
public static void main(String[] args) {
byte a=1;
a=(byte)(a+4);
System.out.println(a);
}
}
(2)下面試一試a+=b的形式
public class TestDemo {
public static void main(String[] args) {
byte a=1;
a+=4;
System.out.println(a);
}
}
我們發(fā)現(xiàn)結(jié)果是正確的,程序也沒毛病。大家需要明確的是“+=”是java中的一個(gè)運(yùn)算符,而不是兩個(gè),所以在運(yùn)算時(shí) 會(huì)進(jìn)行自動(dòng)類型轉(zhuǎn)換。所以在編譯時(shí)沒有報(bào)錯(cuò)。
(3),總結(jié)一下,在兩個(gè)變量的數(shù)據(jù)類型一樣時(shí):a+=b 和a=a+b 是沒有區(qū)別的。
但是當(dāng)兩個(gè)變量的數(shù)據(jù)類型不同時(shí),就需要考慮一下數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換的問題了。
也就是涉及到精度了。
總結(jié)
以上是生活随笔為你收集整理的Java里a和b哪个大_Java中 a+=b和a=a+b有什么区别?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracletns中不存在名称为_关于数
- 下一篇: java了解异常_ID检测_Java入门