運算符盡管很基礎(chǔ)说贝,但也存在一些細(xì)小的知識點會遺漏,不清楚的情況揽咕。做記錄,以備遺忘吧套菜。
算數(shù)運算符中的 / 和 %
對于整型數(shù)據(jù)
整型數(shù)據(jù)的除法和取余運算很簡單亲善,非常的直觀
-
17 / 0
:會拋出java.lang.ArithmeticException 異常 -
0 / 0
:會拋出java.lang.ArithmeticException 異常 -
0 % 17
:等于 0 -
17 % 0
:會拋出java.lang.ArithmeticException 異常,因為取余就相當(dāng)于先進(jìn)行了除數(shù)運算逗柴,再拿到余數(shù)作為計算結(jié)果
對于實型數(shù)據(jù)
實型數(shù)據(jù)可就復(fù)雜了哦蛹头,但是實型數(shù)據(jù)除了一個正無窮一個負(fù)無窮的情況,其他都是 NaN,好記的很熬蚨挟冠!NaN 全稱是 not a number ,源碼中是如下定義的:public static final double NaN = 0.0d / 0.0;
-
17.0 / 0
:返回結(jié)果為 Infinity袍睡,正無窮 -
-17.0 / 0
:等于 -Infinity知染,負(fù)無窮 -
0 / 0.0
:返回結(jié)果為 NaN -
0.0 % 0
:返回結(jié)果為 NaN -
17.6 % 4
:整數(shù)取余,再加上剩下的小數(shù)
運算符中的 +
作為算數(shù)運算符的加法
byte斑胜、short控淡、char 這三種數(shù)據(jù)類型在參與運算的時候,可能會被自動轉(zhuǎn)換為 int 類型的數(shù)據(jù)參與運算止潘,具體規(guī)則如下:
- 單目運算不會改變類型掺炭,
j++
- 復(fù)合雙目運算不會改變類型,
j+=1
- 雙目運算會改變類型凭戴,
j = j + 1
作為字符串連接符
String s = "hello" + "world"
涧狮,這時候,體現(xiàn)的是作為字符連接符的作用么夫。在方法區(qū)的常量區(qū)開辟內(nèi)存空間者冤!
循環(huán)結(jié)構(gòu)
循環(huán)結(jié)構(gòu)中有一個特例,即使用 break / continue 和 label 標(biāo)簽配合使用來結(jié)束循環(huán)代碼塊档痪。單獨使用 break 只能跳出本層循環(huán)涉枫,但配合使用標(biāo)簽可以跳出更外層的循環(huán)。是跳出標(biāo)簽指定范圍內(nèi)的這個代碼塊腐螟,光標(biāo)直接跳到這個代碼塊的結(jié)束位置愿汰。這種方式更靈活,代碼可讀性也高乐纸。
public static void main(String[] args) {
label1:
while (true) {
label2:
for (int i = 0; i <= 10; i++) {
System.out.println("i=" + i);
if (i == 5) {
// 跳出 label1 標(biāo)簽指定的代碼塊結(jié)束位置
break label1;
}
}
System.out.println("++++++++++++++");
}
}