/**
* @src http://eric-619.iteye.com/blog/693185
* Object类的方法:
* clone()
* equals()
* finalize()
* hashCode()
* toString()
*
* 1、equals()方法:
* ^ equals方法强调比较的值的是否相等
* ==强调对象的地址是否相同
* ^ s1 和 s2的值都保存在对内存中
* s3 和 s4的值都保存在占内存的字符串缓冲池中,缓存池的分配原则是按值是否相同来分配。
* ^ 如果值相同则分在一起,指向他们的引用的hashCode()值也相同。如果不同,则不分在一起,也就不==了。
* 所以s3和s4是相同的两个引用,而s5和他们俩内存地址不同,hashCode值当然也不同了
*
* 2、finalize()方法:
* 由于在Object()类的以下所有子类中的对象都是在java的垃圾回收前自动调用此Object类(父类)的此finalize方法。
* 所以可以重写这样运行的过程可以看的更清楚。
*
* 3、hashCode()方法:
* ^ hashCode()方法的返回值调用它的对象的十进制哈希码
* (不同的对象必有不同的hashCode返回值,但是如果两个引用的值相同则hashCode返回值相同,
* 因为引用不是对象,不是new出来的。)
* ^ 总结:两个对象或者引用的hashCode()是否相同,就是看这些对象或引用的地址是否相同,
* hashCode()方法只看地址。
* ^ Integer类的静态方法toHexString方法作用是将十进制整型数转化成十六进制数
*
* 4、toString()方法:
* ^ toString 方法功能是以字符串形式返回当前对象的有关信息。
* ^ 其返回值是调用它的对象的类名加十六进制哈希码。
*
*/
public class TestObject {
public static void main(String[] args) {
new TestObject().testEquals();
System.out.println("-------------------------------------");
new TestObject().testFinalize();
System.out.println("-------------------------------------");
new TestObject().testHashCode();
System.out.println("-------------------------------------");
new TestObject().testToString();
}
// 1、equals()方法:
public void testEquals(){
String s1 = new String("aaa");
String s2 = new String("bbb");
String s3 = "ccc";
String s4 = "ccc";
String s5 = "ddd";
System.out.println(s3.toString());
System.out.println(s5.toString());
System.out.println("-----");
System.out.println(s3.hashCode());
System.out.println(s4.hashCode());
System.out.println(s5.hashCode());
System.out.println("-----");
if(s3 == s4){
System.out.println("true");
}else{
System.out.println("false");
}
}
// 2、finalize()方法:
public void testFinalize(){
for(int i = 0; i < 100; i++){
Person2 p = new Person2();
for(int j = 0; j < 1000; j++){
String[] test = {"abc", "eft", "java"};
}
}
}
// 3、hashCode()方法:
public void testHashCode(){
Person p1 = new Person(18);
Person p2 = new Person(18);
int handlel = p1.hashCode();
System.out.println("1."+handlel);
System.out.println("2."+Integer.toHexString(handlel));
System.out.println("3."+p1);
System.out.println("4."+p2.hashCode());
}
// 4、toString()方法:
public void testToString(){
Person p1 = new Person(18);
System.out.println(p1.hashCode());
System.out.println(p1);
System.out.println(p1.toString());
}
class Person{
private int age;
public Person(){
System.out.println("创建一个Person对象");
}
public Person(int age){
this.age = age;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public void finalize(){
System.out.println("对象被销毁");
}
}
class Person2{
private int age;
public Person2(){
System.out.println("创建一个Person对象");
}
public Person2(int age){
this.age = age;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public void finalize(){
System.out.println("对象被销毁");
}
}
}
java.lang.Object常用方法
最新推荐文章于 2022-08-19 09:46:30 发布