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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王国华 中级黑马   /  2012-3-27 09:07  /  1966 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

equals方法
为什么要写成 "over".equals(str)
它和str.equals("over")的区别

6 个回复

倒序浏览
当str不是null时,两种写法都可以。
但是如果str为null时,str.equals("over")会抛出空指针异常
回复 使用道具 举报
了解了  谢谢了
回复 使用道具 举报
本帖最后由 了无尘 于 2012-3-27 09:45 编辑

咱俩去吃饭,总共花了100块钱,你50,我50,AA,那么你先给50,我在给50,和我先给50,你在给50有啥区别?

equals方法是字符串这个类继承自Object类的,所有字符串都有这个方法,事实上所有的对象都有这个方法

这个方法的用途是对比对象

如果你问结果的话,那么他们没区别,但如果是执行方面,就有区别,就像我上边说的谁先给钱的区别

"over".equals(str) 实际上就相当于是在over这个字符串里调用了this == str,先这么举例说吧,具体实现肯定不是这么简单的,你可以查下源码,对比的是字符串内部的char数组

str.equals("over") 这个是在str里边调用 this == over 这样的

换句话说 x == y   y == x 你愿意怎么写就怎么写,结果没区别

至于说变量方面,变量可以是null的,而“”字符串常量不会,所以可以避免一些nullpointer异常

评分

参与人数 1技术分 +2 收起 理由
职业规划-刘倩老师 + 2 赞一个!

查看全部评分

回复 使用道具 举报
因为str可以接受null值,如果str==null的话,null是没办法调用.equals()方法的,会出现NullPointerException异常!
回复 使用道具 举报
"over".equals(str)这样的写法是为了回避空指针,“over”.equals(str),当str为null时返回false,而str.equals("over"),str为null时会报空指针异常
回复 使用道具 举报
str.equals("over");如果str为null时,会报空指针异常。然而"over".equals(str)是为了避免空指针异常。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马