逻辑运算符
""里为字符串
- 逻辑运算符
- 短路运算
public class hello{
public static void main(String [] args){
//与(and) 或(or) 非(取反)
boolean a=true;
boolean b=false;
System.out.println("a && b:"+(a&&b));
/*结果 a&&b为真的结果为 false
前面a&&b:为字符串,后一句在判断a&&b(a与b)为真?
逻辑与运算 两个变量为真,结果为输出字符串与a&&b的判断结果为 a&&b: false
*/
System.out.println("a || b:"+(a||b));
/*结果 a||b为真的结果为 true
前面a||b:为字符串,后一句在判断a||b(a或b)为真?
逻辑或运算 两个变量有一个为真,结果为输出字符串与a||b的判断结果为 a||b: true
*/
System.out.println("!(a && b):"+!(a&&b)):
/*结果 a&&b为真的结果为flase,!(a&&b)的意思是a与b的取反,所以!(a&&b)的结果为true
前面!(a&&b)为字符串,a与b取反,后一句判断!(a&&b)为真?
逻辑非运算 如果是真,则变为假,如果是假,则变为真 所以输出结果为 !(a && b): true
*/
//短路运算
int c=5;
boolean d=(c<4)&&(c++<4): //布尔运算,c<4为真,c++=c+1=5,c++<4为真;c<4与c++<4的结果为假
System.out.println(d); //输出为false
System.out.println(c); //输出结果为 5;前面一句结果为false,后面就不会运算c++了
}
}
前面一句结果为false,后面就不会运算算术运算了
位运算
一字节等于八位
public class hello{
public static void main(String [] args){
/*
A = 0011 1100
B = 0000 1101
A&B=0000 1100 (A与B)
A|B=0011 1101 (A或B)
A^B=0011 0001 (异或运算) 相同则为0,不相同为1
~B =1111 0010 (非运算)
2*8=16 2*2*2*2
<< 左移
>> 右移
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
*/
System.out.println(2<<3);
/*结果为16
解释2的二进制为0000 0010中的数左移三位变为0001 0000就是十进制16
*/
}
}