java Object类

欢乐豆123 / 2024-03-04 / 原文

java Object类


Object包含了9大常用方法:
getClass()
hashcode()
toString()
equals()
finalize()

notify()
notifyAll()
wait()
clone()


   一、toString()
   方法摘要

   public String toString():返回该对象的字符串表示。

   toString方法返回该对象的字符串表示,其实该字符串内容就是:对象的类型名+@+内存地址值

   查看源码:

1     public String toString() {
2 
3         return getClass().getName() + "@" + Integer.toHexString(hashCode());
4 
5     }

由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。

比如:

 

 1     public static class Student {
 2 
 3         public String name;
 4         public Integer age;
 5 
 6         public Student(String name, Integer age) {
 7             this.name = name;
 8             this.age = age;
 9         }
10 
11         @Override
12         public String toString() {
13             return "Student{" + "name='" + name + "'" + ", age=" + age + '}';
14         }
15     }

   二、equals()

   方法摘要:
   public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。
   调用成员方法equals并指定参数为另一个对象,则可以判断这两个对象是否是相同的。

 

   查看源码:

1     public boolean equals(Object obj) {
2 
3         return (this == obj);
4 
5     }

   可以看出,Object类中的equals()方法也是比较引用是否相同。那么,想要比较值是否相同,该怎么办呢?这就需要重写equals()。

   重写equals),要注意以下几点注意事项:

   1) 对任意x,x.equals(x)一定返回true

   2)对任意x,y,如果x.equals(y)返回true,则y.equals(x)也一定返回true

   3)对任意x,y,z,如果x.equals(y)返回true,y.equals(z)也返回true,则x.equals(z)也一定返回true

   4)对任意x,y,如果对象中用于比较的信息没有改变,那么无论调用多少次x.equals(y),返回的结果应该保持一致,要么一直返回true,要么一直返回false

   5)对任意不是null的x,x.equals(null)一定返回false