你知道Java中&&和||放一个表达式中怎么执行吗

 时间:2024-10-13 15:34:54

1、在java中运算符&&和||的优先级是一样的。看看这段代码的执行结果是什么Show me the code.Code:package ch锾攒揉敫apter4;/** * Created by MyWorld on 2016/3/20. */public class OperatorAndOrDemo { public static void main(String[] args) { if (iAmFalse() && (iAmTrueNo1() || iAmTrueNo2())) { System.out.println("Main:Result is true"); } else { System.out.println("Main:Result is false"); } } private static boolean iAmTrueNo1() { System.out.println("Has invoked! I'm iAmTrueNo1()"); return true; } private static boolean iAmTrueNo2() { System.out.println("Has invoked! I'm iAmTrueNo2()"); return true; } private static boolean iAmFalse() { System.out.println("Has invoked! I'm iAmFalse()"); return false; }}

你知道Java中&&和||放一个表达式中怎么执行吗

3、分析下原因:只调用了前面的iAmFalse() 方法,小括号中方法一个也没有调用不是说好的,小括号的优化级最高嘛。是的,的确小括号的优化级最高,但并不是说小括号里的表达式先执行了!!小括号内的表达式和iAmFalse()使用&&连接,因为小括号的优化级最高,因此小操作里面的iAmTrueNo1() || iAmTrueNo2()作为一个整体来运算由于iAmFalse()在&&运算符的左边,就先执行了。因为iAmFalse()的返回值是false,&&有短路功能,从左到右运算,有一个为false就直接返回结果了。

你知道Java中&&和||放一个表达式中怎么执行吗

5、看看执行结果:Has invoked! I'm iAmFalse()Has invoked! I'm iAmTrueNo2()Main:Result is true

你知道Java中&&和||放一个表达式中怎么执行吗

7、按照上面的逻辑,不使用小括号,if中表达式怎么改下顺序,才能让这三个函数都执行呢?分析一下:iAmFalse()iAmTrueNo1()iAmTrueNo2()三个表达式,2true 1false&&和||都有短路功能,&&是遇到false知道,||是遇到true短路因此能够触发短路的表达式不能放一块,即iAmFalse() 不与使用&&与另外两个表达式相连iAmFalse()只能使用||与其它表达式关联,只有这一种形式:iAmFalse() ||true如果上面表达式后面是||操作符,就触发短路操作了,因此只能是&&操作符得到结果:iAmFalse()||iAmTrueNo1()&&iAmTrueNo2()(因此iAmTrueNo2()和iAmTrueNo1()的逻辑含义是一样的,当然也互换位置了)Code:if (iAmFalse() || iAmTrueNo1() && iAmTrueNo2()) {

你知道Java中&&和||放一个表达式中怎么执行吗
  • 怎么判断一个字符串是否包含另一个字符串
  • notepad++怎么显示菜单栏
  • plsql怎么修改字体样式和大小?
  • 使用PLSQL连接oracle数据库
  • eclipse编码格式如何设置?
  • 热门搜索
    贫血怎么办 中长发怎么扎好看 怎么怀孕 淘宝运费险怎么用 密码箱打不开怎么办 晚上磨牙厉害怎么治 牛排怎么腌制 脚臭怎么办快速去脚臭的小妙招 精囊炎是怎么引起的 x型腿怎么矫正