1.关于equals(),所有的类都继承了Object类,继承的
hashcode(),toString(),equals()方法
在Object类的源码中:
public boolean equals(Object obj){
return (this == obj);
}
也就是说如果没有override掉对象的equals()方法,就调用对象的equals()实际上还是比较两个对象引用是否是同一个对象,比较的不是对象的内容。
public boolean equals(Object obj){
if(this == obj)
return true;
if(!(obj instanceof A))
return false;
A a = (A)obj;
if(a.name.equals(this.name))
return true;
return false;
}
2.Object中的toString()方法
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
那么定义一个类时,可以override掉Object类的toString()方法.
3.String和StringBuffer
String对象每次使用"+"改变它的内容时都会生成一个新的String对象
而StringBuffer使用append()来append字符串,但是并不会生成新的StringBuffer.
String a = "abc";
String b = "abc";
String的实现采用了类似于字符串池的概念,如果String a定义的变量只是指向字符串池中的某个字符串,那么也就可知,如果两个变量所赋值的字符串相同,如a,b;那么其实只需要在字符串池中存储一个"abc"就行了,此时也就可知a,b指向同一个字符串了。