A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 彭璞 中级黑马   /  2012-12-1 22:06  /  1717 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 彭璞 于 2012-12-1 22:52 编辑

if(username.equals(“zxx”)){}  这有什么不妥

如果username为null的时候为什么会包空指针异常

("zxx").equals(usename)就不会报?

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

4 个回复

倒序浏览
如果 username 为 null     那么相对应的内存地址 什么都没有放,你说会不会报空指针异常呢?
回复 使用道具 举报
你这问题很好解决,equals是谁的方法?Object的吧,既然是对象的,我们调用方法的时候什么怎么调用的? 对象.方法,如果你在堆内存中都不存在,试问,equals前既然都不存在对象的引用,你怎么调用此方法进行比较,而equals后面的是方法里的参数,为空又有何不可?{:soso_e113:}
回复 使用道具 举报
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;
     ......
}
回复 使用道具 举报
你可以在使用之前加一个判断语句,如果判断成null就直接跳出,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马