在业务需求中,我们经常会判断是否为null而去做一些业务处理,用到了equals方法,但是你想想之前真的没有用错吗?
话不多说,这个经常用,直接上代码
package com.example;
import lombok.extern.slf4j.Slf4j;
/**
* @author XuYangWei
* @Date 2022/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的变量比较,一定要定值在前面,变量在后面。
声明:本站所有文章,如无特殊说明或标注,均为网络收集发布。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。