關於今天小班上課,兩個問題。
阿新 • • 發佈:2019-02-08
1.&和&&的區別。
- &和&&都可以用作邏輯與的運算子,表示邏輯與(and),當運算子兩邊的表示式的結果都為true時,整個運算結果才為true,否則,只要有一方為false,則結果為false。
- &&還具有短路的功能,即如果第一個表示式為false,則不再計算第二個表示式,例如,對於if(str != null&&!str.equals(“”))表示式,當str為null時,後面的表示式不會執行,所以不會出現NullPointerException如果將&&改為&,則會丟擲NullPointerException異常。If(x==33&++y>0) y會增長,If(x==33 && ++y>0)不會增長
- &還可以用作位運算子,當&操作符兩邊的表示式不是boolean型別時,&表示按位與操作,我們通常使用0x0f來與一個整數進行&運算,來獲取該整數的最低4個bit位,例如,0x31& 0x0f的結果為0x01。
2.關於break跳轉的問題。
確實,也許在未來的專案裡面不會用break,並不是這個語法不好用,而是使用跳轉之後,邏輯容易出錯,所以就回避了這個跳轉的功能。
有標籤的情況下:
for (int i = 0; i < 10; i++) {
System.out.print("a");
l: for (int j = 0; j < 10; j++) {
System.out.print("b");
for (int j2 = 0; j2 < 10; j2++) {
System.out.print("c");
if (j2 == 2) {
break l;
}
}
}
}
Console輸出為:abcccabcccabcccabcccabcccabcccabcccabcccabcccabccc
無標籤的情況下:
for (int i = 0; i < 10; i++) {
System.out.print("a");
for (int j = 0; j < 10; j++) {
System.out.print("b");
for (int j2 = 0; j2 < 10; j2++) {
System.out.print("c");
if (j2 == 2) {
break;
}
}
}
}
Console輸出為:abcccbcccbcccbcccbcccbcccbcccbcccbcccbcccabcccbcccbcccbcccbcccbcccbcccbcccbcccbc
ccabcccbcccbcccbcccbcccbcccbcccbcccbcccbcccabcccbcccbcccbcccbcccbcccbcccbcccbccc
bcccabcccbcccbcccbcccbcccbcccbcccbcccbcccbcccabcccbcccbcccbcccbcccbcccbcccbcccbc
ccbcccabcccbcccbcccbcccbcccbcccbcccbcccbcccbcccabcccbcccbcccbcccbcccbcccbcccbccc
bcccbcccabcccbcccbcccbcccbcccbcccbcccbcccbcccbcccabcccbcccbcccbcccbcccbcccbcccbc
ccbcccbccc
這兩個能一樣麼?
多餘的話不想說,說的都是無語……
見笑見笑!!!