学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