上面三个判断空有什么区别
三个测试值
if(userName==null)
{
out.println("aa");
}else{
out.print("bb");
}
当什么都不填或空格的时候为bb
if(userName.equals(""))
{
out.println("aa");
}else{
out.print("bb");
}
当什么都不填的时候为aa当为空格的时候为bb(这样写为什么有时候报错但有时候却不报错)
if("".equals(userName))
{
out.println("aa");
}else{
out.print("bb");
}
当什么都不填的时候为aa当为空格的时候为bb
不太理解这三种写法有什么区别
(userName==null) 是判断 userName是不是为null
2. if(userName.equals(""))
3. if("".equals(userName))
2,3差不多,不过如果userName为null时,2会报异常,而3为false,所以一般建议写法3
简单的说:
null是没有分配内存的,
equals("")是分配这个对象的,占内存的。
理解这个问题实际上就是理解null和“”的不同含义;
null,一个不确定的值,什么都有可能,有可能是“”,也可能不是“”,有可能是其他的值,总之,不确定;
而“”,代表一个value,确定了,他的value=“”;null != "";