逻辑、位运算符
逻辑运算符
有关于逻辑运算符,有以下实例
package operater;
public class Demo05 {
public static void main(String[] args) {
//逻辑运算符:与 或 非
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b));
//逻辑与,两个变量都为真,结果为真
System.out.println("a || b:"+(a||b));
//逻辑或,两个变量一个为真,结果为真
System.out.println("!(a && b:)"+!(a&&b));
//如果第一个逻辑与为假,则返回真,反之亦然
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);
/*
这里因为c++没有执行,所以c的值没有变成6
而是保持着5
所以这里就发生了短路
程序在运行c<4时,发现该结果为假
根据逻辑运行的逻辑
在判断c为假的时候,程序会直接返回值
即返回布尔值d为假
而不会继续执行c++
*/
}
}
位运算符
package operater;
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
A&B 上下相同则保留,反之为0 0000 1100
A|B 有真则存真,其余一样 0011 1101
A^B 如果上下位相同则为零,否则为1 0011 0001
~B 与变量全位相反 1111 0010
2*8 = 16 普通方式:2*2*2*2
<<:左移,,*2
>>:右移,,/2
位运算相当快,效率极高
2*8最快的方式就是2<<3
*/
System.out.println(2<<3);
/*
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
数字每往左移以为,数字会变大
*/
}
}
值得一提的是这个在计算机网络原理里也有提到
关于位运算,我们一般不用,因为我们通常不使用二进制来做运算