JAVA里的布爾運算符-甲骨文面試題


重要一點:

(& ,|) ==>二進制布爾運算符,(&&,||)==>條件布爾運算符

二進制布爾運算符,兩邊都會執行,不管左邊是否為真或假==>對於運算符兩邊的操作數不管真假與否,都會先計算出來結果后再進行布爾邏輯運算

但是條件布爾運算符不同,更先進,如果&&左邊為假,那么右邊不執行;||左邊為真,右邊也不執行;

具體細節:

JAVA里的布爾運算符可以分為【二進制布爾運算符】和【條件布爾運算符】。

1.二進制布爾運算符
二進制布爾運算符:與(&),或(|),異或(^),當其操作數是布爾值時,它們就是邏輯運算符,注意:對於運算符兩邊的操作數不管真假與否,都會先計算出來結果后再進行布爾邏輯運算;當其操作數是整數時,它們就是位運算符。
 
2.條件布爾運算符
條件布爾運算符:條件與(&&),條件或(||),條件非(!)運算符,只能對布爾值進行計算,並且從左到右,如果有一個操作數為真,就不再計算它右邊的操作數,直接得出計算結果。
看個例子:
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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM