黑马程序员技术交流社区

标题: 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