Java編程語言中的&和&&都是邏輯運算符,它們的主要區別在于操作數的類型和結果的返回值。
&運算符可以用于操作整數、字符、布爾和位運算,它的返回值為兩個操作數的按位與運算的結果。
int a = 3; // 二進制表示為 0011 int b = 5; // 二進制表示為 0101 int c = a & b; // 0011 & 0101 = 0001 System.out.println(c); // 輸出1
與之不同的是,&&運算符只能用于操作布爾類型,它的返回值為兩個操作數的邏輯與運算的結果。
boolean flag1 = true; boolean flag2 = false; boolean result = flag1 && flag2; // false System.out.println(result); // 輸出false
另外一個值得注意的點是,&運算符會對兩個操作數都進行按位與運算,而&&運算符是短路運算符,在第一個操作數為false時,不會執行第二個操作數。
int a = 3; boolean b = true; boolean result1 = b && (a++ >2); // true System.out.println(a); // 輸出3,只有第一個操作數被執行 boolean result2 = b & (a++ >2); // true System.out.println(a); // 輸出4,兩個操作數都被執行
因此,在選擇使用&或&&運算符時,需要根據操作數類型和運算結果的要求來決定使用哪個。