概述
逻辑运算符、位运算符
话不多说,先上代码感受一下:
package operator;
public class demo04 {
// 逻辑运算符
public static void main(String[] args) {
// 与(and)
或(or)
非(取反)
boolean a = true;
boolean b = false;
// 逻辑与运算,两个变量都为真,结果才为true
System.out.println("a&&b:" + (a&&b));
//a&&b:false
// 逻辑或运算,两个变量有一个为真,结果才为true
System.out.println("a||b:" + (a||b));
//a||b:true
// 如果为真,则为假,如果为假,则为真
System.out.println("!(a&&b):" + !(a&&b));
//!(a&&b):true
}
}
短路运算
以上的&& 与 || 为短路运算,所谓的短路运算就是,如果要判断一个条件是否为真,拿&&来说,上面我们定义了两个变量:a与b,其值为true与false,a&&b:因为a为true所以还要判断b是否为true,b&&a:如果b为false,则a就不会在判断,直接返回结果false(以上是我自己的总结)。
这么说可能有些小伙伴还是不怎么明白,我们来段代码测试一下:
代码:
package operator;
public class demo04 {
// 逻辑运算符
public static void main(String[] args) {
// 与(and)
或(or)
非(取反)
boolean a = true;
boolean b = false;
// 短路运算
int c = 5;
boolean d = (c<4)&&(c++<10);
System.out.println(c);
//结果为:5
System.out.println(d);
//结果为:false
}
}
通过上面代码可以看到,c<4为false,但&&后面有个c++,如果不是短路运算,则c输出应该为6,这里的&&就发生了短路运算。
位运算
位运算的符号:&、|、^、~(取反)
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
如果A&B中都为1,则位1。
A|B = 0011 1101
如果A|B中只要有一个为1,则为1。
A^B = 0011 0001
如果A^B中两个数相等则为0,否则为1。
~A = 1100 0011
如果为1,则为0,如果为0,则为1。
<<(左移) 与 >>(右移)
例子:2*8怎么运算最快?位运算的速度最快!
代码:
package operator;
public class demo04 {
// 逻辑运算符
public static void main(String[] args) {
System.out.println(2<<3);
//结果为16
}
}
为什么2<<3就等于16呢?
其实,2<<3就相当于向左移动3位。
eg:
0000 0000 二进制中代表0
0000 0001 ------------> 1
0000 0010 ------------> 2
0000 0011 ------------> 3
0000 0100 ------------> 4
0000 1000 ------------> 8
0001 0000 ------------> 16
总结: <<一位,相当于乘以2,>>一位,相当于除以2。
在此说明一下:本人不是托,我的这些总结都是根据哔哩哔哩的up主:遇见狂神说,我是看他的视频学习的,真心推荐这位up主,有兴趣的小伙伴可以去看看!!!
最后
以上就是斯文热狗为你收集整理的java基础---逻辑运算与位运算逻辑运算符、位运算符的全部内容,希望文章能够帮你解决java基础---逻辑运算与位运算逻辑运算符、位运算符所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复