===============================================================
| 逻辑运算符 | 描述 |
| --- | --- |
| & | 逻辑与,同真为真,一假全假 |
| | | 逻辑或,有真为真,全假为假 |
| ^ | 逻辑异或,相同为假,不同为真 |
| ! | 逻辑非,真假互换 |
================================================================
♀ 小AD:明哥,啥叫真假,是不是“我真的好想再活500年”的那个“真”。
♂ 明世隐:对,真是那个真,但其实这个结果是假,没人能活500年。
♀ 小AD:那我懂了,就是非此即彼呗,也就是你前面讲过的boolean布尔类型的值,true or flase。
♂ 明世隐:嗯,小家伙掌握的不错吗,没有白费我的苦心,还带你上那么多分。
♀ 小AD:谢明哥,那逻辑与同真为真就是 & 两边都是真的话,那就是真,否则就不是真,对吧。
♂ 明世隐:是的呀,我给你写段代码,你就明白了。
package learnJava;
public class Learn14 {
public static void main(String[] args) {
//& 的两边都是true,结果才是true,否则都是false
//两边都是true
System.out.println(true&true);//true
//先true后false
System.out.println(true&false);//false
//先false后true
System.out.println(false&true);//false
//都是false
System.out.println(false&false);//false
}
}
运行结果
true
false
false
false
♀ 小AD:明哥,你这样写,我一下就懂了,也就是 & 旁边有一个出现false就肯定是false,只有全部true才是结果true。
♂ 明世隐:对啊,就是这个意思,所以“同真为真,一假全假”
♀ 小AD:嗯,这个我理解了,但程序中不可能这样用的吧,一般不是这样的代码呢
♂ 明世隐:那确实,现在我们就来写一段代码
♀ 小AD:好嘞明哥,明哥加油!
package learnJava.P14;
public class Learn1 {
public static void main(String[] args) {
//& 的两边都是true,结果才是true,否则都是false
int a = 10;
int b = 20;
int c = 30;
//a>b为flase b>c 为false 返回false
System.out.println(a>b&b>c);
//a>b为flase b<c 为true 返回false
System.out.println(a>b&b<c);
//a<b为true b<c 为true 返回true
System.out.println(a<b&b<c);
}
}
运行结果:
false
false
true
♀ 小AD:也就是& 符号两边计算的结果本身就是要boolean类型的呗
♂ 明世隐:那是必须的
♀ 小AD:那我懂了,我也来写一段代码,明哥来指导一下。
♂ 明世隐:可以,不是那些七七八八的鬼东西吧。
♀ 小AD:那怎么会,当然是很正常的。
♂ 明世隐:我信你一次。
package learnJava.P14;
public class Demo1 {
public static void main(String[] args) {
//& 的两边都是true,结果才是true,否则都是false
String ming = "最强王者";
String adc = "荣耀黄金";
boolean res1=false;
boolean res2=false;
if("最强王者".equals(ming)){
res1=true;
}
if("最强王者".equals(adc)){
res2=true;
}
System.out.println("明哥这赛季任务达标了吗?");
System.out.println(res1&res2);
}
}
运行结果:
明哥这赛季任务达标了吗?
false
♀ 小AD:明哥,我这代码没毛病吧?
♂ 明世隐:毛病是没毛病,知识点掌握的也不错,就是感觉你代码里有话要说。
♀ 小AD:没有啊,我单纯写个代码。
♂ 明世隐:你就是在暗示。
♀ 小AD:不敢不敢
♂ 明世隐:放心吧了,你先把代码写好了再说
♀ 小AD:哦。知道了。
================================================================
♂ 明世隐:“有真为真,全假为假”,能看明白不?
♀ 小AD:意思就是只要有true就是true,否则就是false
♂ 明世隐:看来你语文学的不错撒,就是这个意思。
♀ 小AD:老规矩,写个代码给我看看。
♂ 明世隐:那必须的
package learnJava.P14;
public class Learn2 {
public static void main(String[] args) {
//| 的两边有一个true就为true,否则就是false
//两边都是true
System.out.println(true|true);//true
//先true后false
System.out.println(true|false);//true
//先false后true
System.out.println(false|true);//true
//都是false
System.out.println(false|false);//false
}
}
运行结果:
true
true
true
false
♀ 小AD:这个我懂,一看就明白,只要有一边出现 true就是true,两边都是false才是false。
♂ 明世隐:对,真聪明
♀ 小AD:那我直接写个代码,不需要你举例了。
♂ 明世隐:行,我相信你
♀ 小AD:这就安排
package learnJava.P14;
public class Demo2 {
public static void main(String[] args) {
//| 的两边有一个true就为true,否则就是false
String java = "小菜鸟";//小AD的java水平
String wangzhe = "荣耀黄金";//小AD的王者水平
boolean res1=false;
boolean res2=false;
if("最强王者".equals(java)){
res1=true;
}
if("最强王者".equals(wangzhe)){
res2=true;
}
System.out.println("明哥这赛季任务达标了吗?");
System.out.println(res1 | res2);
}
}
运行结果:
明哥这赛季任务达标了吗?
false
♂ 明世隐:行啊你,我真服你了,代码用的炉火纯青了吧。
♀ 小AD:没有没有,要多向明哥学习、
♂ 明世隐:你这用代码变着法暗示呢?还没有。
♀ 小AD:我就是写真顺手
♂ 明世隐:看来不需要明哥教Java和带王者了吧。
♀ 小AD:哪能,明哥YYDS。
♂ 明世隐:算你识相,下一个吧,大聪明
♀ 小AD:O滴K
=================================================================
♂ 明世隐:“相同为假,不同为真”,这样很好理解咯。
♀ 小AD:那就是两边不一样就为真咯。
♂ 明世隐:是的,上代码看看
package learnJava.P14;
public class Learn4 {
public static void main(String[] args) {
//^ 两边不同为true,相同是false
//两边都是true
System.out.println(true^true);//false
//先true后false
System.out.println(true^false);//true
//先false后true
System.out.println(false^true);//true
//都是false
System.out.println(false^false);//false
}
}
运行结果:
false
true
true
false
♀ 小AD:明哥,这就是两边不能相同咯,同性相斥,是这个意思吧。
♂ 明世隐:额。。。是吧,现在的年轻人,说话我老年人顶不住。
♀ 小AD:没有啊,没有什么难以理解的话呀。
♂ 明世隐:得,这次到我来举个例子吧,每次都是你搞事情。
♀ 小AD:明哥,抢我表现的机会。
♂ 明世隐:你表现的还少吗?
♀ 小AD:好,行,你来。
package learnJava.P14;
public class Demo3 {
public static void main(String[] args) {
String ming = "最强王者";
String adc = "荣耀黄金";
boolean res1=false;
boolean res2=false;
if("最强王者".equals(ming)){
res1=true;
}
if("最强王者".equals(adc)){
res2=true;
}
System.out.println("明哥这赛季任务达标了吗?");
System.out.println(res1^res2);
}
}
运行结果:
明哥这赛季任务达标了吗?
true
♀ 小AD:明哥,你这就没意思了吧,照抄我代码。
♂ 明世隐:这就合理利用资源,不要浪费。
♀ 小AD:行吧,算你厉害。
♂ 明世隐:还不是被我拿捏了,小样。
♀ 小AD:。。。。。。
================================================================
♂ 明世隐: “真假互换”,这个应该好理解,就是加上 !后,真的就变假,假的就变真了。
♀ 小AD:真假美猴王?
♂ 明世隐:别扯好吧,正经点
♀ 小AD:那你举个实例吧
package learnJava.P14;
public class Learn5 {
public static void main(String[] args) {
System.out.println(!true);//false
System.out.println(!false);//true
}
}
运行结果:
false
true
♂ 明世隐:这个应该很好看明白吧
♀ 小AD:嗯,我明白了,不就是true加一个!在前面就变成false,false加一个!在前面就变成了true,好简单的。
♂ 明世隐:那又来举个例子
♀ 小AD:那是肯定的呀,走你!
package learnJava.P14;
public class Demo4 {
public static void main(String[] args) {
String ming = "最强王者";
String adc = "荣耀黄金";
boolean res1=false;
boolean res2=false;
if("荣耀王者".equals(ming)){
res1=true;
}
if(!"最强王者".equals(adc)){
res2=true;
}
System.out.println("明哥这赛季任务达标了吗?");
System.out.println(res1);