《Oracle Java SE编程指南》16-02:toStri
2020-04-22 本文已影响0人
AT阿宝哥
课程封面-JavaSE-AT阿宝哥
扫描二维码,关注AT阿宝哥
内容导航:
- 前言
- 1、toString()方法
- 2、不重写toString()方法
- 3、重写toString()方法
前言
我们在调试时,怎么打印出一个对象的状态呢?
1、toString()方法
Object 类的 toString 方法返回一个该对象的字符串表示,或者说将任何一个对象转换成字符串返回,这对于调试非常有用。建议所有子类都重写此方法。方法定义如下:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
通过观察,该字符串由类名、at 标记符@
和此对象哈希码的无符号十六进制表示组成。
示例代码:
package com.company.project.demo0201;
public class Client {
public static void main(String[] args) {
// 创建Object对象
Object object = new Object();
// Object类的toString()方法
System.out.println(object.getClass().getName());
System.out.println(object.hashCode());
System.out.println(Integer.toHexString(object.hashCode()));
System.out.println(object.toString());
// 默认是不需要显式的写.toString()方法的,推荐写法。
System.out.println(object);
}
}
运行结果:
java.lang.Object
2018699554
7852e922
java.lang.Object@7852e922
java.lang.Object@7852e922
打印时,默认不需要显式的写.toString()方法,推荐该写法。
2、不重写toString()方法
如果没有重写toString()方法,将调用Object
类的toString()方法。
示例代码-Message类:
package com.company.project.demo0202;
//类:消息。
public class Message {
// 发件人
private String from;
// 收件人
private String to;
// 发送时间
private String sendTime;
// 接受时间
private String receiveTime;
public Message() {
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getSendTime() {
return sendTime;
}
public void setSendTime(String sendTime) {
this.sendTime = sendTime;
}
public String getReceiveTime() {
return receiveTime;
}
public void setReceiveTime(String receiveTime) {
this.receiveTime = receiveTime;
}
}
示例代码-Client 类:
package com.company.project.demo0202;
public class Client {
public static void main(String[] args) {
Message message = new Message();
message.setFrom("AT阿宝哥");
message.setTo("朋友");
System.out.println(message);
}
}
运行结果:
com.company.project.demo0202.Message@7852e922
3、重写toString()方法
如果重写了toString()方法,将调用自己的toString()方法。
示例代码-Message 类:
package com.company.project.demo0203;
//类:消息。
public class Message {
// 发件人
private String from;
// 收件人
private String to;
// 发送时间
private String sendTime;
// 接受时间
private String receiveTime;
public Message() {
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getSendTime() {
return sendTime;
}
public void setSendTime(String sendTime) {
this.sendTime = sendTime;
}
public String getReceiveTime() {
return receiveTime;
}
public void setReceiveTime(String receiveTime) {
this.receiveTime = receiveTime;
}
@Override
public String toString() {
return "Message [from=" + from + ", to=" + to + ", sendTime=" + sendTime + ", receiveTime=" + receiveTime + "]";
}
}
示例代码-Client 类:
package com.company.project.demo0203;
public class Client {
public static void main(String[] args) {
Message message = new Message();
message.setFrom("AT阿宝哥");
message.setTo("朋友");
System.out.println(message);
}
}
运行结果:
Message [from=AT阿宝哥, to=朋友, sendTime=null, receiveTime=null]
在重写时,建议使用Eclipse的快捷键自动生成toString()代码。如有特殊需要,可手动重写。
持续更新,欢迎留言提议!
码字很累,多点赞多赞赏!
扫描二维码,关注AT阿宝哥