Java判断字符串是否为null的equals的正确用法

在业务需求中,我们经常会判断是否为null而去做一些业务处理,用到了equals方法,但是你想想之前真的没有用错吗?

话不多说,这个经常用,直接上代码

package com.example;

import lombok.extern.slf4j.Slf4j;

/**
 * @author XuYangWei
 * @Date 2021/1/23 9:06
 */

@Slf4j
public class TestEquals {
    public static void main(String[] args) {
        log.info("我是叫null的小伙子,让我来~");
        toTestEquals(null);
    }

    public static void toTestEquals(String s) {
        String y = "y";
        if (y.equals(s)) {
            log.info("打印不出我,实际业务中equals相等后再我这里做业务代码哦,嘿嘿~~~");
        }
        try {
            if (s.equals(y)) {
                log.info("看异常日志,不用看我,哼~");
            }
        } catch (Exception e) {
            log.info("住手,这里不可以!");
            log.info("我是空指针异常");
        }
    }
}

这里传递一个不为空的字符串s和为空的变量y是null作比较,前面的判断我们先把参数s放前面,后面的判断我们把y放前面。

我们看看测试结果:

同时是两者作比较,前面的方法不会出现空指针异常,跳出if;后面的方法在作比较的时候会直接在if判断的时候出现空指针异常,被捕捉到异常日志输出。

根据打印我们就能看出结果,这种问题新手很容易忽略,以为确定不为null的定值和可能为null的变量比较不管谁在前谁在后都一个样。

总结:

不为null的定值和可能为null的变量比较,一定要定值在前面,变量在后面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值