从零学Java(14)之逻辑运算符01

70 阅读6分钟

分类

===============================================================

| 逻辑运算符 | 描述 |

| --- | --- |

| & | 逻辑与,同真为真,一假全假 |

| | | 逻辑或,有真为真,全假为假 |

| ^ | 逻辑异或,相同为假,不同为真 |

| ! | 逻辑非,真假互换 |

逻辑与

================================================================

♀ 小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);