• 9 &和&&的区别


    &运算符有两种用法

    1 按位与&

    在解释按位与&之前,我们先了解一个知识:程序中的所有数在计算机内存中都是以二进制的形式存储的,位运算就是直接对内存中整数的二进制位进行操作。

    按位与&:是Java中位运算符的一种,它的意思是对二进制进行&运算,只有1&1时结果才是1,其它均为0。

    举例说明

    十进制数 十进制结果 十进制数对应的二进制数
    12   0 0 0 0 1 1 0 0
    5   0 0 0 0 0 1 0 1
    按位与&【1&1为1,否则为0】 4 0 0 0 0 0 1 0 0

    2 逻辑与&

    当符号两边都为true时,结果才为true;

    当符号左边为false时,它依然会执行符号右边的表达式,最终返回false。

    注意:很多时候我们可能需要用的是&&而不是&,比如:username != null && !username.equals(""),如果第一个条件为false,就不能再调用equals方法,要不然会报空指针异常的。

    &&运算符是短路与

    当符号两边都为true时,结果才为true;

    当符号左边为false时,它不会在执行符号右边的表达式,直接返回false。

    /**
     * 逻辑&和&&练习
     */
    public class T {
        public static void main(String[] args) {
    
            boolean f1 = true;
            f1 = false;
            int num1 = 10;
            if(f1 & (num1++ > 0)) {
                System.out.println("true");
            } else {
                System.out.println("false");
            }
            System.out.println(num1);
    
            boolean f2 = true;
            f2 = false;
            int num2 = 10;
            if(f2 && (num2++ > 0)) {
                System.out.println("true");
            } else {
                System.out.println("false");
            }
            System.out.println(num2);
        }
    }

    结果为:

    false

    11

    false

    10

    说明: f1为false,逻辑&依然执行了num1++的操作;f2为false,短路与&&不在执行后边的代码


    Java中运算符的分类

    算术运算符

    赋值运算符

    比较运算符

    逻辑运算符

    位运算符

    三目运算符

  • 相关阅读:
    149. Max Points on a Line(js)
    148. Sort List(js)
    147. Insertion Sort List(js)
    146. LRU Cache(js)
    145. Binary Tree Postorder Traversal(js)
    144. Binary Tree Preorder Traversal(js)
    143. Reorder List(js)
    142. Linked List Cycle II(js)
    141. Linked List Cycle(js)
    140. Word Break II(js)
  • 原文地址:https://www.cnblogs.com/xilichenbokeyuan/p/14150837.html
Copyright © 2020-2023  润新知