前言
由于总是分不清equals
与==
的区别,该何时用什么判断是否为 null
实体类
public class User{
private String biztoken;
private Long data1;
private long data2;
private Date date;
}
测试代码
String 的结果
public static void main(String[] args) {
User user = new User();
String biz = user .getBiztoken();
if(biz == null){
System.out.println("biz == null");
}
if(("").equals(biz)){
System.out.println("('').equals(biz)");
}
if(biz == "null"){
System.out.println("biz =='null'");
}
if(("null").equals(biz)){
System.out.println("('null’).equals(biz)");
}
}
System.out.println(StringUtil.isEmpty(biz));
System.out.println(StringUtil.isBlank(biz));;
conditions | biz == null | (“”).equals(biz) | biz == “null” | (“null”).equals(biz) |
---|
String biz = find.getBiztoken(); | √ | | | |
String biz = find.getBiztoken().toString(); | 空指针异常 | 空指针异常 | 空指针异常 | 空指针异常 |
String biz =String.valueOf(find.getBiztoken()); | | | √ | √ |
Long包装类测试
public static void main(String[] args) {
User user = new User();
Long biz = find.getData1();
if(biz == null){
System.out.println("biz == null");
}
if(biz == 0){
System.out.println("biz == 0");
}
if(("").equals(biz)){
System.out.println("('').equals(biz)");
}
if(("null").equals(biz)){
System.out.println("('null’).equals(biz)");
}
conditions | biz == null | (“”).equals(biz) | biz == “null” | (“null”).equals(biz) | biz == 0 |
---|
Long biz = find.getData1(); | √ | | 异常 | | NullPointerException |
long 基本数据类型测试
public static void main(String[] args) {
User user = new User();
long biz = find.getData2();
if(biz == 0){
System.out.println("biz == 0");
}
if(("").equals(biz)){
System.out.println("('').equals(biz)");
}
if(("null").equals(biz)){
System.out.println("('null’).equals(biz)");
}
System.out.println(StringUtil.isBlank(biz));;
conditions | biz == null | (“”).equals(biz) | biz == “null” | (“null”).equals(biz) | biz == 0 |
---|
Long biz = find.getData1(); | 异常 | | 异常 | | √ |
Date测试
public static void main(String[] args) {
User user = new User();
Date biz = user.getDate();
if(biz == null){
System.out.println("biz == null");
}
if(("").equals(biz)){
System.out.println("('').equals(biz)");
}
if(("null").equals(biz)){
System.out.println("('null’).equals(biz)");
}
}
System.out.println(StringUtil.isEmpty(biz));
System.out.println(StringUtil.isBlank(biz));;
conditions | biz == null | (“”).equals(biz) | biz == “null” | (“null”).equals(biz) |
---|
String biz = find.getBiztoken(); | √ | | 异常,connot apply to Date,string | |
总结
以下情况针对于直接用 get 空值时
1.对于包装类的数据,直接用==null
判断
2.对于基本数据类型,没有值时为 0
3.对于get 方法,取出来的应该是 Object 类型,
3.1 实体类中是包装类,用Integer包装类接收没有问题,但如果用基本数据类型 int 接收,运行时会报空指针异常。
3.2 实体类中是基本数据类型,无论何种接收没有问题,