逻辑运算符、位运算符
1.逻辑运算符
- 与(&&): 两个变量只要有一个是假,结果就是假(两个都是真,结果才是真)
- 或 (||) : 两个变量只要有一个为真,结果就是真(两个都为假,结果才为假)
- 非 (!( ) ):与括号内结果相反
package operator;
//逻辑运算符
public class Demo05 {
public static void main(String[] args) {
//与(&&) 或(||) 非(!)
boolean a = true;
boolean b = false;
//注意下列:""冒号里面的内容为字符串 为了输出结果更加明白 用+与要计算部分相连接 多个数相加 优先计算括号内的内容
System.out.println("a && b:"+(a&&b));//结果为 a && b:false
//与(&&):两个变量都为真,结果才为true ; 两个变量只要有一个是假的,结果就是假
System.out.println("a || b:"+(a||b));//结果为 a || b:true
//或(||):两个变量有一个为真,结果才为true
System.out.println("!(a && b):"+!(a&&b));//结果为 !(a && b):true
//非(!(a&&b)):与括号内的结果相反 如果真,则为假 如果假....
System.out.println("========================================================================");
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);//结果为false
System.out.println(c);//结果为5
/*解析:由于与(&&)是只要有一个变量为假,结果就是假,所以在boolean d = (c<4)&&(c++<4)后半部分,
(c<4)已经是假了,后面的代码程序(c++<4)并不会去执行与计算,即------------>短路运算
所以c++并没有得到运算,这也就是为什么c的值还是5的原因
同理 ||运算也是一样 只要有一个是真,那结果就是真,后面也不会去运算
*/
}
}
2.位运算符
package operator;
//位运算符
public class Demo06 {
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,只要有一个1则都是1
A^B = 0011 0001 //按位异或(^):两个都相同则为0,不同则为1
~B = 1111 0010 //按位取反( ~ ):把B的二进制数 0变1 1变0;
2*8 = 16 2*2*2
<< *2
>> /2
*/
System.out.println(2<<3);//结果为16 //(左移)<< 2*2*2*2=16 2* 三个2
System.out.println(32>>4);//结果为2 //(右移)>> 32/2/2/2/2=2 32/四个2
}
}
标签:逻辑,结果,System,运算符,Day15,&&,true,out
From: https://www.cnblogs.com/baixiaofan/p/17873210.html