Java逻辑运算符

Java的逻辑运算符有3种,分别为"&&(逻辑与)", "||(逻辑或)", "!(逻辑非)"。

1、逻辑与运算符(&&)

逻辑与运算符是二元运算符,连接2个表达式,返回结果为true/false。

两个表达式的逻辑与结果如下:


2、逻辑或运算符(||)

逻辑或运算符是二元运算符,连接2个表达式,返回结果为true/false。
两个表达式的逻辑或结果如下:


3、逻辑非运算符(!)

逻辑非运算符是一元运算符,连接1个表达式,返回结果为true/false。
即假设表达式为true,则!表达式 返回false
假设表达式为false,则!表达式 返回true

Java中"&&(逻辑与)"和"||(逻辑或)"都有短路的效果。
看如下代码和运行结果:

public class Test {

	public boolean funTrue(String str) {
		System.out.print(" true"+str+" ");
		return true;
	}
	
	public boolean funFalse(String str) {
		System.out.print(" false"+str+" ");
		return false;
	}
	public static void main(String[] args) {
		Test test = new Test();

		System.out.println("#逻辑与#");
		boolean flag = test.funTrue("(左表达式)") && test.funTrue("(右表达式)");
		System.out.println(" = "+flag);
		flag = test.funTrue("(左表达式)") && test.funFalse("(右表达式)");
		System.out.println(" = "+flag);
		flag = test.funFalse("(左表达式)") && test.funTrue("(右表达式)");
		System.out.println(" = "+flag);
		flag = test.funFalse("(左表达式)") && test.funFalse("(右表达式)");
		System.out.println(" = "+flag);
		
		System.out.println("#逻辑或#");
		flag = test.funTrue("(左表达式)") || test.funTrue("(右表达式)");
		System.out.println(" = "+flag);
		flag = test.funTrue("(左表达式)") || test.funFalse("(右表达式)");
		System.out.println(" = "+flag);
		flag = test.funFalse("(左表达式)") || test.funTrue("(右表达式)");
		System.out.println(" = "+flag);
		flag = test.funFalse("(左表达式)") || test.funFalse("(右表达式)");
		System.out.println(" = "+flag);
	}
}

运行结果(编号为我自己加的,方便后面描述)为:

1#逻辑与#
2 true(左表达式)  true(右表达式)  = true
3 true(左表达式)  false(右表达式)  = false
4 false(左表达式)  = false
5 false(左表达式)  = false
6#逻辑或#
7 true(左表达式)  = true
8 true(左表达式)  = true
9 false(左表达式)  true(右表达式)  = true
10 false(左表达式)  false(右表达式)  = false

如上结果,第4和第5行左表达式为false时,程序不在判断右表达式,直接返回结果false
第7和第8行左表达式为true时,程序不在判断右表达式,直接返回结果true。
这就是"&&(逻辑与)"和"||(逻辑或)"运算符的短路效果。
 
即:
&&(逻辑与):如果左表达式为false时,不再判断右表达式,直接返回结果false
||(逻辑或):如果左表达式为true时,不再判断右表达式,直接返回结果true




  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值