邏輯運算子
邏輯與:&&和&,邏輯或:||和|,邏輯非:!。
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println("a && b = " + (a&&b)); // false
System.out.println("a || b = " + (a||b) ); // true
System.out.println("!(a && b) = " + !(a && b)); // true
}
邏輯與和邏輯或採用短路的方式。從左到右計算,如果確定值則不會再計算下去。在兩個運算元都為
true時,結果才為true,但是當得到第一個操作為false時,其結果就必定是false,這時候就不會再判斷
第二個操作了。
邏輯與只要有一個為false, 則直接返回false。
邏輯或只要有一個為true, 則直接返回true。
public static void main(String[] args){
int a = 5;//定義一個變數;
boolean b = (a<4)&&(a++<10);
System.out.println("使用短路邏輯運算子的結果為"+b);
System.out.println("a的結果為"+a);
}
解析:該程式使用到了短路邏輯運算子(&&),首先判斷 a<4 的結果為 false,則 b 的結果必定是 false,
所以不再執行第二個操作 a++<10 的判斷,所以 a 的值為 5。
位運算子
Java定義了位運算子,應用於整數型別(int),長整型(long),短整型(short),字元型(char),和位元組型
(byte)等型別。位運算子作用在所有的位上,並且按位運算。
A = 0011 1100
B = 0000 1101
-----------------
A&b = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011
右移一位相當於除2取商。
左移一位相當於乘2。
【常見面試題:int a=2*8怎樣運算效率最快?】
解析:
public static void main(String[] args) {
System.out.println(2 << 3);
}
用移位運算 int a=2<<3;
a就是2乘以8 最後結果是16 這是最省記憶體 最有效率的方法
這個方法確實高效率的。我來解釋一下:
2的二進位制是10 在32位儲存器裡面是0000 0000 0000 0010
左移三位後變成 0000 0000 0001 0000 也就是16
解釋一下,在系統中運算是以二進位制的形式進行的。相比來說倆個二進位制數相乘運算比移位運算慢一
些。
位操作是程式設計中對位模式按位或二進位制數的一元和二元操作。 在許多古老的微處理器上, 位運算比
加減運算略快, 通常位運算比乘除法運算要快很多。 在現代架構中, 情況並非如此:位運算的運算速度
通常與加法運算相同(仍然快於乘法運算). 詳細的內容需要了解計算機的組成原理!