官术网_书友最值得收藏!

第4章 細說開發人員意識中的20個常見謬誤

對編程相關知識理解上的錯誤可能會對編寫的程序產生負面的影響,也可能會給他人造成理解上的錯誤,這里的錯誤我們稱為謬誤。

為了避免編程謬誤對程序員及其所開發軟件造成影響,要對這些謬誤進行更正,筆者根據多年的編程經驗,對一些經常容易產生的謬誤進行了總結,希望通過本章的學習,程序員能夠不再犯同樣的錯誤。

謬誤1 看似相同——使用&&、||和&、|作用于布爾值效率相同

有很多程序員認為邏輯與運算符“&&”和“&”,作用于布爾值效率相同,其實這種說法是錯誤的,這是因為“&&”是短路運算符,當用“&&”連接起來的兩個邏輯值,如果第一個邏輯值為假值false,則“&&”連接的表達式就為假值false,不再判斷第二個邏輯值的真假,而用“&”連接起來的表達式則不同,不管第一個邏輯值是真值true,還是假值false,都需要對第二個邏輯值進行判斷,所以使用“&”運算符要比使用“&&” 運算符效率低。

同理,對于邏輯或運算符“||”和“|”,作用于布爾值效率相同的說法也是錯誤的,這是因為“||”也是短路運算符,當用“||”連接起來的兩個邏輯值,如果第一個邏輯值為真值true,則“||”連接的表達式就為真值true,不再判斷第二個邏輯值的真假,而用“|”連接起來的表達式則不同,不管第一個邏輯值是真值true,還是假值false,都需要對第二個邏輯值進行判斷,所以使用“|”運算符要比使用“||” 運算符效率低。

示例:

    public class Test {
      public static void main (String[] args) {
          int a = 200;
          if (a>100 && a<500){      // 使用&&運算符
            System.out. println ("a是100到500之間的數");
          }
          int b = 800;
          if (b>500 & b<1000){      // 使用&運算符
            System.out. println ("b是500到1000之間的數");
          }
      }
    }

運行本示例,效果如圖4.1所示。

圖4.1 使用&&和&運算符的效果

說明

雖然使用“&&”和“&”以及“||”和“|”都可以進行邏輯運算,但是由于“&&”和“||”是短路運算符,執行效率高,所以如果作為條件語句和循環語句的條件使用時,則應盡量使用“&&”和“||”運算符。

主站蜘蛛池模板: 江永县| 施秉县| 墨江| 肃宁县| 定日县| 沾化县| 清河县| 上林县| 迭部县| 正蓝旗| 济南市| 泸州市| 汝城县| 聂拉木县| 林口县| 廊坊市| 通江县| 获嘉县| 汽车| 新绛县| 密云县| 育儿| 镇巴县| 茂名市| 泽州县| 克山县| 临泽县| 庐江县| 辽宁省| 仁化县| 正宁县| 郸城县| 当雄县| 开远市| 芜湖市| 红原县| 玉山县| 清徐县| 许昌县| 黄平县| 乌拉特中旗|