面试题: &,| 与&&,||的区别?

在开发中,经常会发现代码在进行逻辑判断的时候要么出现&&,要么出现||,几乎没有出现&|这是为什么呢?通俗来讲,自然是哪个好用哪个,也就是哪个效率更好用哪个。

区别:
&&(短路与):&&如果表达式左边为false,结果肯定为false,也就是表达式右边不参与运算。(效率高)
&(与):&如果表达式左边为false,结果肯定为false,但是右边表达式参与了运算

||(短路或):||如果表达式左边为true,结果肯定为true,也就是表达式右边不参与运算。(效率高)
|(或):|如果表达式左边为true,结果肯定为true,但是右边表达式参与了运算

代码演示
&&运算符

public class Test1 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        System.out.println((++a == 3)&&(++b == 4));// false && false =false
        System.out.println("a="+a+",b="+b); // a=4,b=4 ,表达式右边没有进行运算
    }
}

输出: a=4,b=4,表达式左边为false,则右边不参与运算,故b的值没有发生变化

而对于&,如下

public class Test1 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        System.out.println((++a == 3)&(++b == 4));// false & false =false
        System.out.println("a="+a+",b="+b); // a=4,b=5 右边也进行了运算

    }
}

输出: a=4,b=5, 显然两边都进行了运算

||运算符

public class Test1 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        System.out.println((++a == 4)||(++b == 4));// true || false =true
        System.out.println("a="+a+",b="+b); // a=4,b=4 ,显然表达式右边没有进行运算
    }
}

输出: a=4,b=4,表达式左边为true,结果一定为true,则右边不参与运算,故b的值没有发生变化

而对于|,如下

public class Test1 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        System.out.println((++a == 4)|(++b == 4));// true | false =true
        System.out.println("a="+a+",b="+b); // a=4,b=5 右边也进行了运算

    }
}

输出: a=4,b=5, 显然两边都进行了运算.

posted @   JamieChyi  阅读(78)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示