对null和equals有必要了解一点东西(编码规范)

本文探讨了Java中null比较的两种方式及其编程规范的原因,并通过实例解释了为何应将常量置于equals方法调用的左侧,以避免潜在的空指针异常问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

null == o 和 o == null 的区别

public class Main {
    public static void main(String[] args) {
        Object o = null;
        if (o == null) {
            System.out.println("o == null");
        }
        if (null == o) {
            System.out.println("null == o");
        }
    }
}

运行结果:
o == null
null == o

两段代码的效果是一样的,那为什么编程规范里要把null提前呢?
假如你少写了个等号,写成a = null是不会报错的,但是null = o,会报错,所以习惯写null == o更好

“abc”.equals(str) 和 str.equals(“abc”) 的区别

public class Main {
    public static void main(String[] args) {
        String str = "abc";
        System.out.println(str.equals("abc"));
        System.out.println("abc".equals(str));
    }
}

运行结果:
true
true
字符串放在equals前面和后面看似没有区别,但是它隐藏了一个巨大的隐患。看以下代码:

public class Main {
    public static void main(String[] args) {
        String str = null;
        System.out.println("abc".equals(str));
        System.out.println(str.equals("abc"));
    }
}

运行结果:
false
Exception in thread “main” java.lang.NullPointerException
at com.yhc2.Main02.main(Main.java:8)

我们可以发现字符串放在前面的正常运行,字符串放在后面的出现了空指针异常,那是因为放在后面要有一个前提,就是字符串不能为空,而放在前面非常巧妙的避免这个问题,而且逻辑上一个字符串确实不equals一个null值,所以返回false。

总结:常量放在左边是基本素养

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值