Day8逻辑运算符与位运算符
package operator;
//逻辑运算符
public class Demo5 {
public static void main(String[] args) {
//与(and)或(or)非(取反)
//符号语言分别是:&& || !
boolean a = true;
boolean b = false;
System.out.println("a&&b"+(a&&b));//逻辑与运算:两个变量都为真,则结果为true
System.out.println("a||b"+(a||b));//逻辑或运算:两个变量只要有一个为真,则结果为true
System.out.println("!a&&b"+!(a&&b));//若结果为真,则变为假,真的则变成假的
//短路运算:在与运算中,若是第一个变量已经被确认是false,则不会再继续执行后面的代码,直接输出false
int c = 4;
boolean d = (c<4)&&(c++<4);
System.out.println(c);//输出结果为4,可知c++并未被执行,否则应该输出5
System.out.println(d);
}
}
package operator;
public class Demo6 {
public static void main(String[] args) {
/*
a = 0011 1100
b = 0000 1101
a&b = 0000 1100 两个数都为1才是1,否则为0
a|b = 0011 1101 都为0,则结果为0,否则为一
a^b = 0011 0001 相同则为0,否则为1 异或
~b = 1111 00100 取反
接下里思考一个问题:2*8怎样运算最快?
将问题简化为2*2*2*2
在二进制中
0000 0000 0
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
<< *2
>> /2
效率极高
*/
System.out.println(2<<3);//16
}
}

浙公网安备 33010602011771号