Object
- toString()
- equals
- hashCode()
Object
Object是所有类的根基类,所有类都默认继承Object类
一、String toString()
Returns a string representation of the object. In general, the
toString
method returns a string that “textually represents” this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.
上述是Oracle官方API的说明,就是说:返回该对象的字符串表示形式,但是不便于阅读,为了便于阅读,建议所有子类都重写该方法。
public class Test {
public static void main(String[] args) {
A a = new A();
System.out.println(a.toString());
System.out.println(a);
}
}
class A{
}
运行结果 |
---|
Object.A@1b6d3586 Object.A@1b6d3586 |
直接打印对象.toString()
方法和直接打印对象
结果是一样的
Object.A@1b6d3586
就是没重写之前的字符串表示形式
- Object.A:类所在的路径
- 注意:我创建了一个名叫Object的包,A类在该包下
- @:就是一个拼接符
- 1b6d3586:该对象的哈希值的16进制
一般toString方法都会被重写,用来打印该类的属性信息
public class Test {
public static void main(String[] args) {
A a = new A(1,"张三",20);
System.out.println(a);
}
}
class A{
int id;
String name;
int age;
public A() {
}
public A(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "A{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
运行结果 |
---|
A{id=1, name=’张三’, age=20} |
二、boolean equals(Object obj)
比较两个对象的地址是否一致
public boolean equals(Object obj) {
return (this == obj);
}
上述是Object类的equals方法,可以看到是拿自己和传进来的obj进行比较
三、int hashCode()
返回对象的地址计算出唯一的一个值
public class Test {
public static void main(String[] args) {
A a = new A();
System.out.println(a.hashCode());
}
}
class A{
}
运行结果 |
---|
460141958 |
460141958
就是该对象的唯一哈希值
为重写之前的toString()
方法返回的数据@
符号后面的数据就是哈希转转换为16
进制后的数据
public class Test {
public static void main(String[] args) {
A a = new A();
System.out.println(a);
System.out.println(Integer.toHexString(a.hashCode()));
}
}
class A{
}
运行结果 |
---|
Object.A@1b6d3586 1b6d3586 |
Integer.toHexString(int i):
传入一个int
型数据,返回该数据的String
类型的16
进制
可以看到,直接打印的和通过转换得到的是一样的