柳叔 发表于 2016-1-24 15:33:02

java短路逻辑问题,求大神解答。

public class ShortCircuit{
    //执行test1()时打印出执行信息
    static boolean test1(int val){
      System.out.println("test1("+val+")");
      System.out.println("result: " + (val<6));
      return val<6;
    }
    //执行test2()时打印出执行信息
    static boolean test2(int val){
      System.out.println("test2("+val+")");
      System.out.println("result: " + (val<4));
      return val<4;
    }
    //执行test3()时打印出执行信息
    static boolean test3(int val){
      System.out.println("test3("+val+")");
      System.out.println("result: " + (val<2));
      return val<2;
    }
    public static void main(String[] strs){
      boolean b = test1(val)&&test2(val)&&test3(val);
      System.out.println("expression is: " + b);
    }
}


大神可以解释下 加粗和红色字体的部分吗?

就是怎么判断 test1(val)&&test2(val)&&test3(val) 它们的值,有点搞不懂?

比如:
int x=3;
int y=4;

(x!=0)&&y是false因为有数字值相比。

像上面提问的例子,没有值可比,求大神解答。
         

Antergone 发表于 2016-1-24 15:42:04

首先建议你copy东西copy的完整点,我并没有看到加粗和红色在哪里?
第二点,你这个问题貌似满大街都有把?
http://blog.csdn.net/xuefu_78/article/details/50412698
http://wenku.baidu.com/link?url=TlfNbUE86fqww9vi5OuyKhEyihza3g_J99qOYkAYx1441vokKHjsd1u3UcoUFcroXo_uv25lj_gSaZ1xMN7J8cnogcXBUH6Ao-grhWY_NlW


自己去看

xiaoye 发表于 2016-1-24 16:21:47

本帖最后由 xiaoye 于 2016-1-24 16:28 编辑

分析:

实例:



                                这些在java中也是有介绍到的,比C语言,C++资料中的介绍更加明了,人丑多读书!!!!

柳叔 发表于 2016-1-24 16:21:59

早就看了 不过 我就是不明白 就是粗字体的地方的值怎么比?

xiaoye 发表于 2016-1-24 16:26:46

柳叔 发表于 2016-1-24 16:21
早就看了 不过 我就是不明白 就是粗字体的地方的值怎么比?

去看逻辑关系,逻辑与的运算。

xiaoye 发表于 2016-1-24 16:34:03

不是用值去比的。

xiaoheizi 发表于 2016-2-24 10:34:47

加粗字体的地方,是由test(val)中所传入的val值与6、4、2等拿来比较。val<6中的val就是你test(val)中所填写的val,是数值

寂寞烟味 发表于 2016-3-6 15:55:12

1.在方法调用的时候没有给形参val传值。boolean b = test1(val)&&test2(val)&&test3(val);   val--没有赋值。
2.“短路与”和“逻辑与”的区别在于是否计算后面的布尔类型表达式。
比如你举得例子:
int x = 3,y = 4; (x!=0)&&y   “&&”逻辑与表达式的左边是Boolean类型。右边表达式是算数类型。不能进行比较!逻辑运算符的两端必须是逻辑类型才能进行比较。
页: [1]
查看完整版本: java短路逻辑问题,求大神解答。