JDK源码阅读-------自学笔记(一)(java.lang.Object重写toString源码)
一、前景提要
- Object类中定义有public String toString()方法,其返回值是 String 类型.
二、默认返回组成
- 类名+@+16进制的hashcode,当使用打印方法打印的toString()默认就是返回整个格式
三、场景
- 很多时候默认的返回,无法让人直观的看到对象的数据和结构类型,所以,一般重写其toString()方法,打印或输出需要的信息
四、实例重写
- 重写代码
1 @Override 2 public String toString() { 3 return "User{" + 4 "id=" + id + 5 ", userName='" + userName + '\'' + 6 ", passWord='" + passWord + '\'' + 7 '}'; 8 }
- 测试结果:
五、源码阅读
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public String toString() { 2 return getClass().getName() + "@" + Integer.toHexString(hashCode()); 3 }
六、实例源码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package com.baidu.www.bean; 2 3 4 public class User { 5 6 private Integer id; 7 8 private String userName; 9 10 private String passWord; 11 12 public User() { 13 14 } 15 16 public Integer getId() { 17 return id; 18 } 19 20 public void setId(Integer id) { 21 this.id = id; 22 } 23 24 public String getUserName() { 25 return userName; 26 } 27 28 public void setUserName(String userName) { 29 this.userName = userName; 30 } 31 32 public String getPassWord() { 33 return passWord; 34 } 35 36 public void setPassWord(String passWord) { 37 this.passWord = passWord; 38 } 39 40 @Override 41 public String toString() { 42 return "User{" + 43 "id=" + id + 44 ", userName='" + userName + '\'' + 45 ", passWord='" + passWord + '\'' + 46 '}'; 47 } 48 49 /** 50 * 测试toString() 51 * 52 * @param args 传入值 53 */ 54 public static void main(String[] args) { 55 56 57 User user = new User(); 58 user.setId(1); 59 user.setPassWord("123456"); 60 user.setUserName("zhangsan"); 61 62 System.out.println("用户信息:" + user.toString()); 63 64 } 65 }
七、总结
经验传递
可以使用快捷键生成 IDEA右键---->Generate--->toString() 会生成自动重写的toString()
十年磨一剑,一剑破万法