黑马程序员技术交流社区

标题: 关于equals的方法的问题,求指点迷津 [打印本页]

作者: yanzhigang    时间: 2013-5-22 21:40
标题: 关于equals的方法的问题,求指点迷津
在使用equals方法的时候,如下(username是一个参数)username.equals("admin")
   和"admin".equals(username)有区别吗?请大神们指点迷津.
作者: 棉/mg花/x糖    时间: 2013-5-22 22:04
楼主,您好,我来回答您这个问题。

坦率的说,但从最终结果来说,是等价的,无任何区别。

唯一的区别在于,引用euqals()方法的对象(变量)不同!!
一个是在编译时就加载进内存的字符串变量"admin",一个是字符串对象

这里,两条语句的用法应该是根据具体语境来决定具体用法。


作者: yanzhigang    时间: 2013-5-22 22:45
我感觉是这样的 :一般情况下没有区别;但是不排除个别情况的出现.  当username是null的时候,username.equals("admin")
在编译或者运行的时候应该会报错吧 .而"admin".equals(username)则不会报错.  是不是这样啊?
作者: 火之意志    时间: 2013-5-22 23:23
楼主童鞋,你的感觉是对的,,当username.equals("admin")时,username作为参数调用equals()方法,在极端情况下,也就是username==null;这个时候username是空指针,调用equals()方法,在编译是会提醒java.lang.NullPointerException异常,呵呵而'admin".equals(username)则不会报错.
作者: 梦想蓝色天空    时间: 2013-5-23 00:16
同意2楼3楼说法。把常量放到equals前面是为了防止username为null时,造成值为null的变量与常量比较 发生NullPointerException




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2