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中运算符的分类

算术运算符

赋值运算符

比较运算符

逻辑运算符

位运算符

三目运算符

原文地址:https://www.cnblogs.com/xilichenbokeyuan/p/14150837.html