[原]toString()方法的复写作用, 以及打印集合.
}
Object o = new Object();
System.out.println(o); //结果java.lang.Object@bab5e85
public static class Person { // 自定义Person类, 未重写 toString()函数
Integer id = 1;
String name = "duenboa";
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Person p = new Person();
System.out.println(p); //com.hoss.weixin.controller.eflow.EfHrChgController$Person@2e7aacc1
public static class Person {
Integer id = 1;
String name = "duenboa";
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
Person p = new Person();
System.out.println(p); //Person{id=1, name='duenboa'}
System.out.println(map);
这句最基本的标准打印控制函数的实现又是如何调用的呢?
在java.io.PrintStream.java类源码中, 依旧还是通过String.valueOf(Obj)去获取String.
public void println(Object x) {
String s = String.valueOf(x); //1
synchronized (this) {
print(s);
newLine();
}
}
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
List list = new ArrayList();
list.add(new Person());
list.add(new Person());
System.out.println(list); // Person类有重写toString方法时[Person{id=1, name='李克用'}, Person{id=1, name='李克用'}]
System.out.println(list); // Person类未重写toString方法时[com.hoss.weixin.controller.eflow.EfHrChgController$Person@53ffb7d4, com.hoss.weixin.controller.eflow.EfHrChgController$Person@397dea61]
Map<Integer, Person> map = Maps.newHashMap();
map.put(1,new Person());
map.put(2,new Person());
System.out.println(map);//{1=Person{id=1, name='李克用'}, 2=Person{id=1, name='李克用'}}
System.out.println(map);//{1=com.hoss.weixin.controller.eflow.EfHrChgController$Person@70d4c191, 2=com.hoss.weixin.controller.eflow.EfHrChgController$Person@1ff05076}
[原]toString()方法的复写作用, 以及打印集合.的更多相关文章
- 复写equals、hashCode和toString方法
equals.hashCode和toString 这三个方法都是object类的方法,由于所有的类都是继承这个类,所以每一个类都有这三个方法. 1.复写equals方法 原则: 首先,两个实例是相同的 ...
- 为何重写toString方法后会使哈希码能够打印出来
首先还是推荐lz看源代码 简单的讲之所以调用了toString()方法,不是什么编译器默认的,而是因为lz你调用的是out.print()方法仔细看源代码,在PringStream类中,print方法 ...
- JAVA中toString方法的作用
因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不 ...
- JAVA中toString方法的作用(转)
因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不 ...
- 打印对象和toString方法
JAVA对象 java对象是都是Object类的实例,都可直接调用该类中定义的方法,这些方法提供了处理java对象的通用方法. > > 6.2.1打印对象和toString方法 先看 ...
- 当使用System,out.println()打印一个对象是自动调用toString方法
在Java中,所有的对象都是继承自Object,自然继承了toString方法,在当使用System,out.println()里面为一个对象的引用时,自动调用toString方法讲对象打印出来.如果 ...
- 优雅的重载toString方法,打印对象内容而不是打印内存地址的方法
如果直接在日志或者System.out.println中打印java对象,会打印这个对象的内存地址,而不是具体内容. 为了便于调试,一般的做法有2种: 1.重写toStrong方法 2.将对象传入JS ...
- java类中根据已有的变量复写类的toString方法
java类中根据已有的变量复写类的toString方法: 在该类中定义好变量之后,shift+alt+s,从出现的列表中点击gemerate toString,就会自动生成对应的toString方法.
- 自己(转)JAVA中toString方法的作用
JAVA中toString方法的作用 因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.print ...
随机推荐
- 在C语言中使用syslog打印日志到日志文件
参见 <unix 环境高级编程>第13 章 精灵进程 Syslog为每个事件赋予几个不同的优先级: LOG_EMERG——紧急情况 LOG_ALERT——应该被立即改正的问题,如系统数据库 ...
- Python字典的入门案例
查看python版本: [root@localhost ~]# python -V Python 2.7.5 1.基本的字典操作 案例1:简单电话本实现 [root@localhost ~]# vim ...
- C#DataSet/DataAdapter
DataReader必须持续连接,所以在调用方法SqlDataReader作为返回类型时候,必须在方法外关闭流,很不方便. DataAdapter用于对数据源检索数据并填充到DataSet中的表.Da ...
- DevOps means no Ops!
DevOps means no Ops! 只单纯地搞网络的话或许你可以搞得非常好,并且获得不错的薪资,不过,5年后~10年后~,那时候随便一个人经过简单的学习就能通过Web界面或者专用的工具就能搞定一 ...
- 数据库连接理解——JDBC
需求:数据库操作 数据是:用户信息 1.连接数据库 JDBC Hibernate 2.操作数据库 c create r read u update d delete 3.关闭数据库连接 interf ...
- Data Structure Binary Tree: Convert a given tree to its Sum Tree
http://www.geeksforgeeks.org/convert-a-given-tree-to-sum-tree/ #include <iostream> #include &l ...
- Java多线程系列 JUC线程池06 线程池原理解析(五)
ScheduledThreadPoolExecutor解析 ScheduledThreadPoolExecutor适用于延时执行,或者周期性执行的任务调度,ScheduledThreadPoolExe ...
- zabbix实现mysql数据库的监控(二)
上章我们把zabbix的服务端和客户端都部署完成了,本章接着进行两部分的设置: 1 添加对mysql数据库主机的监控 2 添加对mysql数据库的监控 一.对数据库服务器主机监控 1 创建主机 步 ...
- linux下搭建java开发环境
1 下载jdk包 这里下载.gz格式的,通过ftp上传到服务器 2 解压到指定目录,如/usr/java/ tar -xvf XXX.tar.gz 解压后会在/usr/java下生成一个目录,如jdk ...
- Spark- SparkStreaming可更新状态的实例
Producer package zx.zx.sparkkafka import java.util.Properties import kafka.producer.{KeyedMessage, P ...