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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈虹旭 中级黑马   /  2012-10-2 16:14  /  2195 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈虹旭 于 2012-10-2 17:21 编辑

以前看到很多同学讨论equals()和==的区别,但是不管是比较对象还是比较其他我都没有对他们说的区别有所理解!
今天在看异常中的某一个调用中又用到了这个方法的使用。
我想问的是:
equals() 这个方法,两个对象可以进行比较,两个字符串可以进行比较,为什么两个数字和两个字符比较会提示报错:NullPointException:无法取消引用?
这类报错该如何解决?
equals()究竟可以对什么进行比较,什么不可以比较呢?想比较常规下不能比较的内容,只能在对象中定义再比较两个对象才可以吗?

9 个回复

倒序浏览
equals() 是对象的方法,基本数据类型不属于对象,不能调用equals() 方法。只有对象才能调用equals() 方法。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
高照 发表于 2012-10-2 16:19
equals() 是对象的方法,基本数据类型不属于对象,不能调用equals() 方法。只有对象才能调用equals() 方法 ...

两个字符串也可以进行比较啊,那你的意思是说字符串也是对象吗?
回复 使用道具 举报
陈虹旭 发表于 2012-10-2 16:25
两个字符串也可以进行比较啊,那你的意思是说字符串也是对象吗?

对了,字符串就是对象,String是一个类,在jdk1.5以后的版本支持。String s ="abcde";相当于String s=new String("abcde");毕老师的13天的视频里有讲,而且String中是重写了Object中的equals()方法。
回复 使用道具 举报
equals()是对两个字符串对象中的字符是否相等的比较,他所指的是两个字符串,字符串是用""表示的,而简单的数据类型(包括数字和字符)是不能用equals进行比较的。
回复 使用道具 举报
古银平 发表于 2012-10-2 16:38
对了,字符串就是对象,String是一个类,在jdk1.5以后的版本支持。String s ="abcde";相当于String s=new ...

明白了 谢谢指点
回复 使用道具 举报
两个字符串比较  两个对象比较   
1.首先,第一  两个对象比较,这里的equals 和 ==  就是一个作用了(前提是你根本没有去复写过equals方法),它们比较的是地址值,      而 字符串 是String类型, 你去查看下API就知道,它自己复写过equals方法,比较的是两个字符串的内容。
2.你说 两个数字 和 两个字符去比较,当然会报错了      数字 和 字符 属于基本数据类型,你去调用equals方法,你先想想, 基本数据类型  有equals方法么? 当然是没有了,既然没有equals方法 你调用equals方法是不是会报NullPointException的异常。。 如何解决  你可以自己手动对其 装箱,比如  
Integer  a=new Integer(4);  Integer  b=new Integer(5);   此时a和b 是引用数据类型了 就可以使用equals方法了。  字符的原理一样  你调用 Character 这个类来创建字符对象就行了。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
黑马-王燚 发表于 2012-10-2 17:36
两个字符串比较  两个对象比较   
1.首先,第一  两个对象比较,这里的equals 和 ==  就是一个作用了(前提 ...

那也就是说equals()方法比较的都是引用数据类型的数据吗?
回复 使用道具 举报
陈虹旭 发表于 2012-10-2 17:45
那也就是说equals()方法比较的都是引用数据类型的数据吗?

对的,你查看 API 可以看到 public boolean equals(Object obj)   这里的参数已经限定死了,只能是Object  类类型(引用数据类型)
回复 使用道具 举报
黑马-王燚 发表于 2012-10-2 17:53
对的,你查看 API 可以看到 public boolean equals(Object obj)   这里的参数已经限定死了,只能是Object ...

哦 明白了明白了 看来还是掌握的不够扎实啊 ...谢谢啊 !
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马