第十一,short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?
引出一下討論。
★ =: 賦值運算子,在編譯器將右邊的表示式結果計算出來後,和左邊的變數型別比較精度,如果左邊的變數精度低於右邊的結果的精度,編譯器會顯式的報錯,告訴程式設計師去強制轉型。(所以s1 = s1 + 1出錯)最後將表示式的結果複製到變數所在的記憶體區。
★ +=:暫且稱之為**運算子,編譯器自動隱式直接將+=運算子後面的運算元強制裝換為前面變數的型別,然後在變數所在的記憶體區上直接根據右邊的運算元修改左邊變數記憶體儲存的二進位制數值(所以 s += 1不報錯)最後達到和賦值運算子相同的目的。與前者相比,由於後者是位操作,效率也較前者高。
Java中 和 的區別
和 都可以用作邏輯與的運算子,表示邏輯與 and 當運算子兩邊的表示式的結果都為true時,整個運算結果才為true,否則,只要有一方為false,則結果為false。還具有短路的功能,即如果第乙個表示式為false,則不再計算第二個表示式,例如,對於if str null str.equals 表...
Java中 和 的區別
這兩者都是表示邏輯與,只有當兩邊都是true時,返回true,只要有乙個false則結果返回false。還具有短路的功能,即如果第乙個表示式為 false,則不再計算第二個表示式,例如,對於 if str null str.equals 表示式,當 str 為 null 時,後面的表示式不會執行,所...
Java中 和 的區別
相同點 和 都可以用作邏輯與的運算子,表示邏輯與 and 當運算子兩邊的表示式的結果都為true時,整個運算結果才為true,否則,只要有一方為false,則結果為false。不同點 1 還具有短路的功能,即如果第乙個表示式為false,則不再計算第二個表示式,例如,對於if str null st...