有时候会疏忽这些小的细节,今年在面试和笔试的时候都有考到类似的题目,就是关于&和&&的
Java中不管&&还是&都是作为一个逻辑与,但是&&有一个短路的机制一旦左边是false右边就不会去做判断(这从理论上来说他的效率应该是更高的),但是&不是不管判断条件第一个是不是false它都会去执行下面的判断.但是两者最终的效果都是一样的.
一个小的例子:
public static void main(String[] args) {
//关于&与&&的区别
String test="test";
if(test==null&&100/0==100)
{
System.out.println("test");
}
}
上面的小例子中&&右边的一个判断条件存在错误,但是你在执行的时候,并不会报错,这就是因为&&左边的条件是false一旦一个是false它是不会继续执行下面的判断的.这就是相当于短路的感觉.
public static void main(String[] args) {
//关于&与&&的区别
String test="test";
if(test==null&100/0==100)
{
System.out.println("test");
}
}
如果是&就会出现错误.这就是因为&会把判断条件执行完.
常见的&还有与运算
int a=1;
int b=3;
System.out.println(a&b);
这就是上面的a与b都转化为二进制,最后两者都为1的才会1,最后的结果很显然就是1.