逻辑运算符
与 或 非
逻辑与
与(and):&& 有假为假
两个变量都为真,结果才为true
逻辑或
或(or): || 有真为真
逻辑或运算:两个变量有一个为真,则结果才为true
逻辑非
非(取反)!假为真,真为假
逻辑非运算:如果为假,则为真
短路运算
在第一个变量为假的情况下,并不会去执行后面的代码
package operator;
public class Demo05 {
public static void main(String[] args) {
//与(and)&& 有假为假 或(or)|| 有真为真 非(取反) ! 假为真,真为假
boolean a = true;
boolean b = false;
//下面这三个运算能进行下去的一个必要条件是a为真;
System.out.println("a && b: "+(a && b));//false 逻辑与运算:两个变量都为真,结果才为true
System.out.println("a || b: "+(a || b));// true 逻辑或运算:两个变量有一个为真,则结果才为true
System.out.println("! (a && b): "+!(a && b));// true 逻辑非运算:如果为假,则变为真
//短路运算 再第一个变量为假的情况下 程序并不会去执行后面的语句
int c = 5;
boolean d = (c<4) && (c++ < 4);
System.out.println(d); //false
System.out.println(c); //5 说明 (c++ < 4)没有执行
//正常运算
int e = 5;
boolean f = (e>=5) && (e++<4);//执行到(e++<4)才判断得到false
System.out.println(f); //false
System.out.println(e); // 6
}
}
位运算
位运算:每一位做运算
A = 0011 1100
B = 0000 1101
与 A&B=0000 1100(根据位来进行运算,两个对应位都为一才是一)
或 A/B=0011 1101(有一则一)
异或 A^B=0011 0001 (两个位相同则为0,不同则为1) 不进位二进制加法
非(取反) ~B =1111 0010
2*8怎么运算最快 2*2*2*2
效率高
<< 左移 *2
>> 右移 /2
计算机时不会除法乘法的,都是加法
0000 0000 0
0000 0010 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 0101 5
0000 0110 6
0000 0111 7
0000 1000 8
package operator;
public class Demo06 {
public static void main(String[] args) {
System.out.println(2<<3);//2左移三位 16 2*2^3
}
}