解析java中的toString方法
1 含义
在java.lang.Object下的一个访问权限为public, 返回值为String的方法
若子类无重写,默认打印的就是对象的地址信息
打印对象名,其本质上就是对象名.toString方法去进行打印的,只不过我们写的时候可以省略toString方法罢了。
2 作用
一般都重写Object类中的toString方法用于信息(需要展示的)的打印
打印的一般是该类中自己就定义了的属性
我们之前练习的过程中都是自己定义一个show方法去打印自定义类中的信息的
现在我们统一用自定义类中自己重写的toString去进行打印,这是一种规范
3 如何用
3.1 手动书写
3.1.1 书写过程
a 写上@Override
b.写public String toString(){}
c.书写toString里面的方法体内容
3.1.2 示例代码
Animal
package Work;
public class Animal {
private String name;
//姓名
private int age;
//年龄
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Dog
package Work;
public class Dog extends Animal{
public Dog() {
}
public Dog(String name, int age) {
super(name, age);
}
public void guardDoor(){
System.out.println("狗狗在看门");
}
@Override
public String toString() {
return "狗狗名字为:"+getName()+",狗狗年龄为: "+getAge();
}
}
Test
package Work;
public class Test {
public static void main(String[] args) {
Animal animal01=new Dog("旺财",10);
if (animal01 instanceof Dog){
//打印狗狗基本信息
System.out.println(((Dog) animal01).toString());
}
}
}
3.1.3 示例代码运行截图
3.2 编译器自动生成
3.2.1 idea篇
生成过程
a 按下Alt+Insert键
b 选择toString方法
c 选择要打印显示的属性
d 点击ok即可
示例代码
Dog类
package Work;
public class Dog {
private String name;
private int age;
public Dog() {
}
public Dog(String name, int age) {
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
Test类
package Work;
public class Test {
public static void main(String[] args) {
Dog d1=new Dog("旺财1号",12);
//打印对象名,实际上就是对象名.toString去进行打印的
System.out.println(d1);
}
}
示例代码运行截图
3.2.2 eclipse篇
生成过程
a 按下Alt+Shift+S快捷键
b 选择toString()方法
c 选择需要打印显示的属性
d 点击Generate按钮即可
示例代码
Dog类
public class Dog {
private String name;
private int age;
public Dog() {
//alt+shift+s是快捷键生成get/set方法等
// TODO Auto-generated constructor stub
}
public Dog(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Dog [name=" + name + ", age=" + age + "]";
}
}
Test类
public class Test {
public static void main(String[] args) {
Dog d1=new Dog("旺财",8);
System.out.println(d1);
}
}
示例代码运行截图
3.3 应该选哪种?
开发当中,一般用编译器生成。因为你要写toString的类很多,时间有限的情况下,肯定先去写业务逻辑,像toString()方法什么的编译器自动生成就行了。