逻辑运算符
介绍
无论是在日常生活中,还是工作中,大家在交流之间都会讲一些逻辑,那么,逻辑说到底总是有这样的两种情况,正确和不正确,即 true 和 false。所以,逻辑运算的最终结果都是boolean值,有关boolean值,前面的基本数据类型有讲到过。当然,就像做好人和做坏人一样,好人只有做的事情全部是好事情,最终大家才会认可这个人,如果中途有一件事情是坏事,那么他就不再是好人。相反,坏人只要中途做一件好的事情,最终就会放下屠刀成佛,与(&)和或(|)的运算中,就是这样的一个逻辑。
运算符 | 符号 | 说明 |
与 | & | 只要有一个false,则false |
短路与 | && | |
或 | | | 只要有一个true,则true |
短路或 | || | |
非 | ! | 取反 |
异或 | ^ | 相同为false,不同为true |
&& 和 ||
看到这里,大家应该会有个疑惑,怎么有两个一样的符号呢?短路与和短路或采用短路的方式,从左到右依次计算,如果只通过判断左边的第一个表达式就可以确定整个逻辑表达式的值,那么就不会再继续计算运算符右边的表达式,从而提高效率。
例如:与(&): 1<0 & 2<3 & 2<5 ... 最终值毫无疑问是:false 但是,这个过程需要每一个表达式都运算 1<0:false 2<3:true 2<5:true 最终结果:false。
逻辑与(&&):1<0 && 2<3 && 2<5... 从左到右依次计算,遇到1<0:false 很好!遇到第一个就可以直接决定整个式子的值,后面2<3 && 2<5不再计算下去,输出值为:fasle。 同理,短路或(||)也是这样的一个逻辑,只要找到其中一个为true,则最终结果就是真。
代码示例
// 测试逻辑运算符
class TestLogicOperation{public static void main(String[] args){boolean b1 = true;boolean b2 = false;int num = 0;System.out.println(b1 & b2); // 与运算,只要有一个为false,则false 运算结果:falseSystem.out.println(b1 | b2); // 或运算,只要有一个为true,则true 运算结果:trueSystem.out.println(!b1); // 取反,就是对原有的值取反 运算结果:falseSystem.out.println(b1 ^ b2); // 异或,相同为false,不同为true 运算结果:trueSystem.out.println();System.out.println(1 / 0); // 异常// 测试短路与 和 短路或System.out.println(2 < 1 && 1 / 0 < 2); // 运算结果:falseSystem.out.println(1 < 2 || 1 / 0 < 2); // 运算结果:true}}// 打印(输出值)
false
true
false
truefalse
true
老李说明
不知道大家有没有和我一样,刚开始学习的时候产生疑问,就是短路与和短路或这两个操作符,既然只计算左面的一个值就可以的话,那么要是对于短路与&&来说,前面只要是true不就是最终值为true吗?刚开始我还以为我特别聪明,直到后来自己上手写代码的时候才发现自己是多么的愚蠢,我忽略了一点,就是最左边计算出来的一个值是能够决定这整个式子才可以。也就是说,无论是与还是短路与运算都没有违背自己的原则,就是所有表达式全为真,最终结果才是真,有一个是false,就可以代表整个表达式为fasle,同理,或和逻辑或运算也是这个道理。只不过短路与和短路或只要能够判断出来一个代表整个式子的值,就停止操作符后面的运算。
记事本编写代码
目前为止,我还是在用记事本 + 黑窗口的方式运行代码,没有使用编码工具。但是,前面的几个章节中,代码是我在Idea中编写好的,直接用到这里。给大家讲一下,怎样使用记事本的方式编译代码!
推荐两款功能强大的记事本:(个人推荐第二个免费:Notepad++)
EditPlus
Notepad++
- 确保环境变量配置完成,环境变量的配置前面已经讲解,忘记的话,可以自己返回去看一下。
- 在Windows系统的任意盘符下创建一个.txt后缀的记事本,打开编写代码
1. F盘下面创建一个txt文件
这里有的小伙伴会发现,我的文件怎么后面没有后缀名字呢?不要担心,你只是没有打开这项功能而已,我是Win10系统,直接点击我的电脑 -- 查看 -- 找到文件扩展名,把前面勾选到即可。
2. 更改后缀名字,改成.java文件
鼠标右键 -- 重命名 -- 更改后缀
这里会弹出一个警告,直接点击是就可以了,什么事情都没有
更改为.java文件后,会发现前面的图标都变样子啦!
继续鼠标右键 -- 选择以Notepad++打开方式,其实不一定非要使用Notepad++打开,普通的记事本就完全可以了,但是普通的记事本里面行号没有,里面一片空白,很不友好
3.编写代码
编写代码的时候,为了更美观一点,可以进行缩进(电脑上面的Tab键),python语言需要严格的缩进,编写完成后,同时按住Ctrl + s键保存
- 来到这个文件TestLogicOperation.java的盘符上面,输入cmd,回车
输入cmd,回车打开黑窗口
- 编译并运行代码
输入 javac TestLogicOperation.java -- 这是编译的过程
我们可以看到,编译期间没有报错,如果有错误的话,下面就会报出一大堆的错误
编译结束后,我们可以发现,多了一个.class文件,这个文件就是编译后的字节码文件
继续输入 java TestLogicOperation命令,显示输出的结果
以上就是使用记事本编写代码以及运行代码的全过程,希望可以帮助您!
注意
使用记事本这种方式编写代码的时候,记事本的命名以及记事本里面class后面的内容对应上,否则就会报异常,也就是两者需要对应上。
给大家演示一下报错的内容,假如记事本里面class后面,写成小写的testLogicOperation,我们再重新编译并运行一下,查看一下报错的内容 -- 可以看到,编译的时候没有报错,解析代码的时候报错:java.lang.NoClassDefFoundError: testLogicOperation (wrong name: TestLogicOperation),就是类没有找到的一个错误
以及上述,我们编写代码的时候,定义一个 int num = 0;我们来试一试 1/0(1除以0)看是否会报错
编译并且运行代码 -- 我们可以看到,报错一个数学异常
这样,大家是不是更好的理解短路与(&&)和短路或(||)的运算了呢?下面的代码,前面一个表达式可以直接决定整个式子的真假,后面的表达式就不再进行运算,直接输出true或者false值,否则使用与(&)和或(|)全部计算一遍的情况下,遇到后面的1 / 0就会报错,而终止运行。
小提示
如果遇到自己看不懂的报错怎么办,其实很简单,已经有人帮助我们总结经验了,我们直接把报错信息粘贴到百度上面查一下就可以了。然后自己慢慢积累,日积月累就自然全通啦!