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 }
何事都只需坚持..
难?
维熟尔。
LZL的自学历程...只需坚持