&运算符有两种用法
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中运算符的分类
算术运算符
赋值运算符
比较运算符
逻辑运算符
位运算符
三目运算符