验证用户名密码时,正确直接输出名字没有问题。错的时候还是显示成功但是名字是null。错误的时候user明明是null为什么会判断不过去?
改成这样写就没事儿了。求解释。
因为既然有user.getUser(),说明你的user是一个你创建了的对象,对象没有内容时也不等于null的,而你user里面的getUser()可以为null
//判断1 : 这里会返回 true
User user = null;
if(user == null){
return true;
}else{
return false;
}
//判断2 : 这里会返回 false
User user = new User();
if(user == null){
return true;
}else{
return false;
}
原因: User user = new User(); 这时候已经创建了一个对象,所以user不会为null
可以理解吗,回答不易,如果可以的话,希望你能给一个采纳啊,非常感谢
因为user是一个对象,对象怎么会等于null?? 只有对象的属性才可以,所以你第二个那么改是可以的,其实应该点,你还应该判断user对象是否存在,才判断user对象的属性是否为空
对象判空用 Objects.nonNull(object); 对象为空用 Objects.isNull(object)
user不问null,但是user中的name成员为null,于是getName返回null
其实前几位说的很清楚了,就是对象实例存在,但是没有任何的属性值
user.getName()是获取use的name属性;一般情况下name应该是个对象;user 不为空,并不代表它的属性对应的对象不为空。
当user不为空,user的name属性对象为空时,就会发生你第一张图描述的现象
第二张图正常的前提是user不为空,因为判断了user.getName()不为空,所以没问题