1,基本介绍
默认返回:全类名+@+哈希值的十六进制(这是子类没有重写toString方法的前提下返回的结果),【查看Object的toString方法】子类往往重写toString方法,用于返回对象的属性信息。
package com.whpu.toString; public class toString1 { public static void main(String[] args) { Person p1=new Person("小明","程序员",25); System.out.println(p1.toString()); } } class Person{ private String name; private int age; private String job; public Person(String name,String job,int age){ this.name=name; this.job=job; this.age=age; } public String getName() { return name; } public int getAge() { return age; } public String getJob() { return job; } }
这个代码是没有子类toString的重写的,所以调用的是父类的toString方法,返回包名+类名+@+哈希值的十六进制。
结果:
2,子类重写了toString方法后,打印对象或拼接对象时,都会自动调用该对象的toString形式
package com.whpu.toString; public class toString1 { public static void main(String[] args) { Person p1=new Person("小明","程序员",25); System.out.println(p1.toString()); } } class Person{ private String name; private int age; private String job; public Person(String name,String job,int age){ this.name=name; this.job=job; this.age=age; } public String getName() { return name; } public int getAge() { return age; } public String getJob() { return job; } public String toString(){ //在子类Person中重写toStirng方法,返回属性信息。 return "name="+name+" job="+job+" age="+age; } }
结果:
3,当直接输出一个对象时,toString方法会被默认的调用。
package com.whpu.toString; public class toString1 { public static void main(String[] args) { Person p1=new Person("小明","程序员",25); System.out.println(p1); //直接输出一个对象时,默认调用相应的toString方法。 } } class Person{ private String name; private int age; private String job; public Person(String name,String job,int age){ this.name=name; this.job=job; this.age=age; } public String getName() { return name; } public int getAge() { return age; } public String getJob() { return job; } public String toString(){ return "name="+name+" job="+job+" age="+age; } }
结果: