java中的相等,java中的相等性总结

学java有段时间了,以下是个人的一点心得体会,希望能够帮助那些刚开始编程的同志们。

几天前,一同学让我帮忙看他的程序到底出现什么问题,代码比较乱,也没有注释,我看了很

长一段时间竟是找不到问题所在。程序大体是这样的,有一段文本taxt,从中间找出任意词语句子进行替

换,当时他使用if判断后进行替换.

String selectText=Text.area1.getSelectedText();

String searchText = Text.searchText;

if(selectText == searchText)

{

.......

}

写到这里估计明眼人一看就知道问题所在,==的使用有问题!由于自己对这部分内容比较生疏,所以上

网搜了一下发现有不少人碰到equal与==的问题,出于加深理解决定写一篇文章,写的不好欢迎拍砖,

以期抛砖引玉之效,还请高手不吝赐教。

相信学习java的同志们都清楚,那么现在打开API看一看类object吧,Object 是类层次结构的根类。

每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法,Object有一个构造函数。

public int hashCode()

public boolean equals(Object obj)

public String toString()

protected void finalize()

protected Object clone()

public final Class> getClass()

public final void notify()

public final void notifyAll()

public final void wait(long timeout)

public final void wait(long timeout,int nanos)

public final void wait()

数了一下除过构造函数,Object总共有11个对外可使用的方法,将这11个方法按照是否可以继承重写来划

分,可以看到我们比较常用的几个方法toString(),equals(),hashCode()不常用但在使用Map时很重要而

且很容易出问题,接下来我们就集中看看这几个方法,

查看jdk中的源代码:

package java.lang;

public boolean equals(Object obj) {

return (this == obj);

}

public String toString() {

return getClass().getName()+ "@"

+Integer.toHexString(hashCode());

}

public native int hashCode();

可以看到,Object提供的equals方法是通过"=="实现的, 而Think in java(4th) P44页

public class Equivalence

{

public static void main(String[] args)

{

Integer a = new Integer(4);

Intege

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值