查看: 3603|回复: 7

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

[复制链接]
  • TA的每日心情
    奋斗
    2016-1-24 12:42
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2016-1-24 15:33:02 | 显示全部楼层 |阅读模式
    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  因为有数字值相比。

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

    使用道具 举报

  • TA的每日心情
    无聊
    2020-1-16 21:33
  • 签到天数: 175 天

    [LV.7]常住居民III

    发表于 2016-1-24 15:42:04 | 显示全部楼层
    首先建议你copy东西copy的完整点,我并没有看到加粗和红色在哪里?
    第二点,你这个问题貌似满大街都有把?
    http://blog.csdn.net/xuefu_78/article/details/50412698
    http://wenku.baidu.com/link?url= ... gcXBUH6Ao-grhWY_NlW


    自己去看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2022-11-4 00:00
  • 签到天数: 325 天

    [LV.8]以坛为家I

    发表于 2016-1-24 16:21:47 | 显示全部楼层
    本帖最后由 xiaoye 于 2016-1-24 16:28 编辑

    分析:
    3.png
    实例:
    4.png


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

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-1-24 12:42
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2016-1-24 16:21:59 | 显示全部楼层
    早就看了 不过 我就是不明白 就是粗字体的地方的值怎么比?

    点评

    去看逻辑关系,逻辑与的运算。  详情 回复 发表于 2016-1-24 16:26
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2022-11-4 00:00
  • 签到天数: 325 天

    [LV.8]以坛为家I

    发表于 2016-1-24 16:26:46 | 显示全部楼层
    柳叔 发表于 2016-1-24 16:21
    早就看了 不过 我就是不明白 就是粗字体的地方的值怎么比?

    去看逻辑关系,逻辑与的运算。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2022-11-4 00:00
  • 签到天数: 325 天

    [LV.8]以坛为家I

    发表于 2016-1-24 16:34:03 | 显示全部楼层
    不是用值去比的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-3-1 21:48
  • 签到天数: 35 天

    [LV.5]常住居民I

    发表于 2016-2-24 10:34:47 | 显示全部楼层
    加粗字体的地方,是由test(val)中所传入的val值与6、4、2等拿来比较。val<6中的val就是你test(val)中所填写的val,是数值
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-4-4 02:10
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    发表于 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类型。右边表达式是算数类型。不能进行比较!逻辑运算符的两端必须是逻辑类型才能进行比较。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-12-23 00:27 , Processed in 0.038302 second(s), 16 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部