• &&和&(||和|)区别


    上代码,引出问题

    public class Test {
        private static int j = 0;
     
        private static Boolean methodB(int k) {
            j += k;
            return true;
        }
     
        public static void methodA(int i) {
            boolean b;
            b = i < 10 || methodB(4);换成b = i < 10 | methodB(4)结果如何?,什么时候输出0,4,8,12呢?
            b = i < 10 | methodB(8);
     
        }
     
        public static void main(String args[]) {
            methodA(0);
            System.out.println(j);
        }
    }
    

     答:&运算符有两种用法:

    (1)按位与;(2)逻辑与。

    &&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都 要求运算符左右两端的布尔值都是true整个表达式的值才是true。

    &&之所以称为短路运算是因为,如果&&左边的表 达式的值是false,右边的表达式会被直接短路掉,不会进行运算。

    很多时候我们可能都需要用&&而不是&,例如在验证用户登录 时判定用户名不是null而且不是空字符串,应当写为:username != null &&!username.equals(“”),二者的顺序不能交换,更不能用&运算符,

    因为第一个条件如果不成立,根本不能进 行字符串的equals比较,否则会产生NullPointerException异常。

    注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如 此。

    这道题主要考的是"|"与"||"的区别
    用法:condition 1 | condition 2、condition 1 || condition 2
    "|"是按位或:先判断条件1,不管条件1是否可以决定结果(这里决定结果为true),都会执行条件2
    "||"是逻辑或:先判断条件1,如果条件1可以决定结果(这里决定结果为true),那么就不会执行条件2
  • 相关阅读:
    推荐系统(二)
    应用高斯分布来解决异常检测问题(三)
    应用高斯分布来解决异常检测问题(二)
    应用高斯分布来解决异常检测问题(一)
    高斯(正态)分布、GDA、Mixtures of Gaussian
    主成分分析
    logistic回归
    推荐系统(一)
    基于朴素贝叶斯模型的文本分类
    K均值聚类算法
  • 原文地址:https://www.cnblogs.com/lbloveab/p/7274071.html
Copyright © 2020-2023  润新知