Object类 中toString()方法详解
1.1 概述
java.lang.Object
类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。
如果一个类没有特别指定父类, 那么默认则继承自Object类。例如:
public class MyClass /*extends Object*/ {
// ...
}
根据JDK源代码及Object类的API文档,Object类当中包含的方法有11个。
public String toString()
:返回该对象的字符串表示。
1.2 toString方法
方法摘要
public String toString()
:返回该对象的字符串表示。
toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。
由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。
覆盖重写
如果不希望使用toString方法的默认行为,则可以对它进行覆盖重写。例如自定义的Person类:
public class Person {
private String name;
private int age;
@Override
public String toString() {
return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
}
// 省略构造器与Getter Setter
}
tostring()方法
思考:为什么定义string类型的字符串,
通过输出语句就能把字符串打印出?
因为String类当中已经对tostring方法进行的重写
public class TestString {
public static void main(String[] args) {
String str = "abc";
System.out.println(str);//打印abc
// 像string,Date,File 包装类等都重写了Object类中的tostring()方法
// 使得调用对象的tostring()时,返回"实体内容"信息
System.out.println(str.toString()); //同样打印abc
}
}
//tostring()的使用:
1.当我们输出一个对象的引用是,实际上就是调用当前对象的tostring()
Customer cus=new Customer();
System.out.println(cus.tostring());
System.out.println(cus);//输出的内容一样
2.像string,Date,File 包装类等都重写了Object类中的tostring()方法
使得调用对象的tostring()时,返回"实体内容"信息
3.自定义类也可以重写tostring()方法,当调用此方法时,返回对象的”实体内容“
重写tostring()方法:
public String toString(){
return ..........
}
案例分析
//student类会继承object类,当然也会继承object类中的toString()方法
public class Student /*extends object */ {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
// 省略构造器与Getter Setter
}
//********************************************************************
//1.不重写toString()方法
//没有重写toString()方法,会默认继承object类中的toString方法
public class TestString {
public static void main(String[] args) {
Student s = new Student("张三",18);
System.out.println(s);//打印的不是 张三,18 而是cn.itcast.day08.Student@1540e19d
}
}
//2.重写Student类中的toString()方法
public class Student /*extends object */ {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
// 省略构造器与Getter Setter
}
public class TestString {
public static void main(String[] args) {
Student s = new Student("张三",18);
System.out.println(s);//重写后打印:Student{name='张三', age=18}
System.out.println(s.toString());//Student{name='张三', age=18}
}
}