1. 程式人生 > >關於今天小班上課,兩個問題。

關於今天小班上課,兩個問題。

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

這兩個能一樣麼?
多餘的話不想說,說的都是無語……

見笑見笑!!!