黑马程序员技术交流社区
标题:
equals的问题
[打印本页]
作者:
彭璞
时间:
2012-12-1 22:06
标题:
equals的问题
本帖最后由 彭璞 于 2012-12-1 22:52 编辑
if(username.equals(“zxx”)){} 这有什么不妥
如果username为null的时候为什么会包空指针异常
("zxx").equals(usename)就不会报?
作者:
郝少普
时间:
2012-12-1 22:32
如果 username 为 null 那么相对应的内存地址 什么都没有放,你说会不会报空指针异常呢?
作者:
深井看海
时间:
2012-12-1 23:42
你这问题很好解决,equals是谁的方法?Object的吧,既然是对象的,我们调用方法的时候什么怎么调用的? 对象.方法,如果你在堆内存中都不存在,试问,equals前既然都不存在对象的引用,你怎么调用此方法进行比较,而equals后面的是方法里的参数,为空又有何不可?{:soso_e113:}
作者:
方建平
时间:
2012-12-1 23:46
if(username.equals(“zxx”)){}
当username为null时,jvm就无法调用equals方法了,因为username是空指针,不指向任何对象,也就没有相应的equals方法可以被 jvm执行。
而如果("zxx").equals(usename),因为"zxx"是字符串,jvm能够识别它是String,于是调用String的equals方法。而String的哦equals方法可以处理比较对象为null的情况,就像下面的方法:
public boolean equals(String str)
{
if(null == str)
return false;
......
}
作者:
陈建华
时间:
2012-12-6 02:19
你可以在使用之前加一个判断语句,如果判断成null就直接跳出,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2