重要一點:
(& ,|) ==>二進制布爾運算符,(&&,||)==>條件布爾運算符
二進制布爾運算符,兩邊都會執行,不管左邊是否為真或假==>對於運算符兩邊的操作數不管真假與否,都會先計算出來結果后再進行布爾邏輯運算
但是條件布爾運算符不同,更先進,如果&&左邊為假,那么右邊不執行;||左邊為真,右邊也不執行;
具體細節:
JAVA里的布爾運算符可以分為【二進制布爾運算符】和【條件布爾運算符】。
public class test4 {
private static int j=0;
private static boolean methodB(int k){
j+=k;
return true;
}
public static void methodA(int i){
boolean b;
b=i<10|methodB(4);
b=i<10||methodB(8);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
methodA(0);
System.out.println(j);
}
}
結果是:
4
因為位運算符| ,兩邊都要執行,||運算符 因為左邊為真,只執行左邊了;
位運算符主要針對二進制,它包括了:“與”、“非”、“或”、“異或”。從表面上看似乎有點像邏輯運算符,但邏輯運算符是針對兩個關系運算符來進行邏輯運算,而位運算符主要針對兩個二進制數的位進行邏輯運算。下面詳細介紹每個位運算符。
1.與運算符
與運算符用符號“&”表示,其使用規律如下:
兩個操作數中位都為1,結果才為1,否則結果為0,例如下面的程序段。
public class data13
{
public static void main(String[] args)
{
int a=129;
int b=128;
System.out.println("a 和b 與的結果是:"+(a&b));
}
}
運行結果
a 和b 與的結果是:128
下面分析這個程序:
“a”的值是129,轉換成二進制就是10000001,而“b”的值是128,轉換成二進制就是10000000。根據與運算符的運算規律,只有兩個位都是1,結果才是1,可以知道結果就是10000000,即128。
2.或運算符
或運算符用符號“|”表示,其運算規律如下:
兩個位只要有一個為1,那么結果就是1,否則就為0,下面看一個簡單的例子。
public class data14
{
public static void main(String[] args)
{
int a=129;
int b=128;
System.out.println("a 和b 或的結果是:"+(a|b));
}
}
運行結果
a 和b 或的結果是:129
下面分析這個程序段:
a 的值是129,轉換成二進制就是10000001,而b 的值是128,轉換成二進制就是10000000,根據或運算符的運算規律,只有兩個位有一個是1,結果才是1,可以知道結果就是10000001,即129。
3.非運算符
非運算符用符號“~”表示,其運算規律如下:
如果位為0,結果是1,如果位為1,結果是0,下面看一個簡單例子。
public class data15
{
public static void main(String[] args)
{
int a=2;
System.out.println("a 非的結果是:"+(~a));
}
}
4.異或運算符
異或運算符是用符號“^”表示的,其運算規律是:
兩個操作數的位中,相同則結果為0,不同則結果為1。下面看一個簡單的例子。
public class data16
{
public static void main(String[] args)
{
int a=15;
int b=2;
System.out.println("a 與 b 異或的結果是:"+(a^b));
}
}
運行結果
a 與 b 異或的結果是:13
分析上面的程序段:a 的值是15,轉換成二進制為1111,而b 的值是2,轉換成二進制為0010,根據異或的運算規律,可以得出其結果為1101 即13。
