java10-2 toString,方法

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

  Integer类下的一个静态方法:

    public static String toHexString(int i):把一个整数转成一个十六进制表示的字符串

      这个信息是没有任何意义的。所以,建议所有子类都重写该方法。

      怎么重写呢?

      把该类的所有成员变量值组成返回即可。

        重写的最终版方案: 就是自动生成toString()方法。从source里面直接生成

    注意:

      直接输出一个对象的名称,其实就是调用该对象的toString()方法。

       

同个包中创建2个类:

第一个:

 1 public class Student {
 2 private String name;
 3 private int age;
 4 
 5 public Student() {
 6 super();
 7 }
 8 
 9 public Student(String name, int age) {
10 super();
11 this.name = name;
12 this.age = age;
13 }
14 
15 public String getName() {
16 return name;
17 }
18 
19 public void setName(String name) {
20 this.name = name;
21 }
22 
23 public int getAge() {
24 return age;
25 }
26 
27 public void setAge(int age) {
28 this.age = age;
29 }
30 
31 @Override
32 public String toString() {
33 return "Student [name=" + name + ", age=" + age + "]";
34 }
35 // 重写to.String方法,快捷方式:右键 → Source → 点击有to String()
36 //调用出自己想要得到的字符串信息.到时候直接用System.out.println(s.toString());
37 // @Override
38 // public String toString() {
39 // return super.toString();
40 // return "hello";
41 // return "姓名:" + name + ",年龄:" + age;
42 // }
43 
44 
45 }

第二个:

 1 public class StudentDemo {
 2 public static void main(String[] args) {
 3 Student s = new Student();
 4 System.out.println(s.hashCode());
 5 System.out.println(s.getClass().getName());
 6 System.out.println("--------------------");
 7 System.out.println(s.toString());// cn.itcast_02.Student@42552c
 8 System.out.println("--------------------");
 9 // toString()方法的值等价于它
10 // getClass().getName() + '@' + Integer.toHexString(hashCode())
11 // this.getClass().getName()+'@'+Integer.toHexString(this.hashCode())
12 
13 // cn.itcast_02.Student@42552c
14 // cn.itcast_02.Student@42552c
15 
16 System.out.println(s.getClass().getName() + '@'
17 + Integer.toHexString(s.hashCode()));
18 
19 System.out.println(s.toString());//Student [name=null, age=0] 重写了
20 
21 // 直接输出对象的名称
22 System.out.println(s);//Student [name=null, age=0] 重写了
23 
24 }
25 }