java在调用System.out.println()打印一个新new的对象时,为什么会调用toString方法?
2018-03-28 19:12
701 查看
在Java中,所有的对象都是继承自Object,自然继承了toString方法,在当使用System.out.println()里面为一个对象的引用时,自动调用toString方法将对象打印出来。如果重写了tostring方法则调用重写的toString 方法。
因为 1.System.out.println()的这个方法源码中调用了String.valueOf(Objec o),
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
} 2. 而String.valueOf(x)的源码就是去调用该对象的toString()方法,源码如下:public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
因为 1.System.out.println()的这个方法源码中调用了String.valueOf(Objec o),
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
} 2. 而String.valueOf(x)的源码就是去调用该对象的toString()方法,源码如下:public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
相关文章推荐
- java在调用System.out.println()打印一个新new的对象时,为什么会调用toString方法?
- 当使用System,out.println()打印一个对象是自动调用toString方法
- System.out.println(s) 打印值为对象引用时,调用toString()方法。
- System.out.println(s) 打印值为对象引用时,调用toString()方法。
- 原!! java直接打印一个对象时,并不是直接调用该类的toString方法 ,而是会先判断是否为null,非null才会调用toString方法
- 疑惑:关于System.out.println()调用toString()方法打印数组名
- java 打印对象时时如何调用对象toString()方法的
- 一个对象toString()方法如果没有被重写,那么默认调用它的父类Object的toString()方法,而Object的toString()方法是打印该对象的hashCode,一般hashCode就是此对象的内存地址
- 一个最简单的java程序,没有任何import 为什么还能System.out.println
- 1、 编写一个方法(名字自定,但要符合Java编码规范),方法内打印一字符串,并在main()方法内调用它。
- java里一个对象可否同时调用多个方法
- JAVA中申请了两个对象,分别在调用方法和声明方法中把其中一个对象直接赋值给另外一个对象,运行结果,求原理。
- 【JAVA学习】解释一个简单的语句 System.out.println
- new 一个没有定义构造方法的子类对象,会调用父类的默认构造方法
- 用java编写一个求质数的和。f(7)=1+3+5+7+11+13+17=58 要求,写一个求质数的和的方法,然后main方法调用这个方法打印出结果,打印语句写在main方法中
- 不得不知道的Java内存溢出之在经常调用的方法内不要new大对象
- IPHONE 开发 6 -- Object C 01 [NSLog打印信息,对象方法,类方法,空格调用一个方法,%d,%s,%@对象
- Android中打印出System.out.println的结果的方法
- Java 打印对象和toString 方法
- 使用java调用C语言的方法,让java获取串口数据并生成一个String对象的代码。