一、長路與
和
短路與
- 無論長路與還是短路與
- 兩邊的運算單元都是布爾值
- 都為真時,才為真
- 任意為假,就為假
- 差別
- 長路與 兩側,都會被運算
- 短路與 隻要第一個是false,第二個就不進行運算了
public class HelloWorld { public staticvoid main(String[] args) { //長路與 無論第一個表達式的值是true或者false,第二個的值,都會被運算 int i = 2; System.out.println( i== 1 & i++ ==2 ); //無論如何i++都會被執行,是以i的值變成了3 System.out.println(i); //短路與 隻要第一個表達式的值是false的,第二個表達式的值,就不需要進行運算了 int j = 2; System.out.println( j== 1 && j++ ==2 ); //因為j==1傳回false,是以右邊的j++就沒有執行了,是以j的值,還是2 System.out.println(j); } } |
二、長路或 和 短路或
- 無論長路或還是短路或
- 兩邊的運算單元都是布爾值
- 都為假時,才為假
- 任意為真,就為真
- 差別
- 長路或 兩側都會被運算
- 短路或 隻要第一個是true的,第二個就不進行運算了
public class HelloWorld { public staticvoid main(String[] args) { //長路或 無論第一個表達式的值是true或者false,第二個的值,都會被運算 int i = 2; System.out.println( i== 1 | i++ ==2 ); //無論如何i++都會被執行,是以i的值變成了3 System.out.println(i); //短路或 隻要第一個表達式的值是true的,第二個表達式的值,就不需要進行運算了 int j = 2; System.out.println( j== 2 || j++ ==2 ); //因為j==2傳回true,是以右邊的j++就沒有執行了,是以j的值,還是2 System.out.println(j); } } |
三、取反
取反!
真變為假
假變為真
public class HelloWorld { public staticvoid main(String[] args) { boolean b = true; System.out.println(b); //輸出true System.out.println(!b);//輸出false } } |
四、異或
異或^
不同,傳回真
相同,傳回假
public class HelloWorld { public staticvoid main(String[] args) { boolean a = true; boolean b = false; System.out.println(a^b); //不同傳回真 System.out.println(a^!b); //相同傳回假 } } |
五、練習--邏輯運算符
題目:
int i = 1; boolean b = !(i++ == 3) ^ (i++ ==2) && (i++==3); System.out.println(b); System.out.println(i); |
上述代碼的輸出結果是?
心算,不要丢到Eclipse中去!
官方答案:
public class HelloWorld { public staticvoid main(String[] args) { int i = 1; boolean b = !(i++ == 3) ^ (i++ ==2) && (i++==3); //i值 2 3 //表達式 false true // true ^ true // false System.out.println(b); System.out.println(i); } } |