Java笔记1 - System.out.println(this)
2017-11-24 01:07
477 查看
在Java中,所有的对象都是继承自Object,自然继承了 toString 方法,在当使用 System.out.println()
方法,里面为一个对象的引用时,自动调用 toString 方法将对象打印出来,而如果重写了 tostring 方法则调用重写的toString方法。
因为 System.out.println() 的这个方法源码中调用了 String.valueOf(Objec
o)
public void println(Object x) {
String s = String.valueOf(x);
synchronized(this) {
print(s);
newLine();
}
}
而 String.valueOf(x) 的源码就是去调用该对象的 toString() 方法,源码如下:
public static String valueOf(Object obj) {
return (obj ==null) ? "null" : obj.toString();
}
对于 System.out.println(this):
this是这个类的引用,
比如说
class A{
public void run(){
System.out.println(this);
}
public String toString() {
return "hello";
}
}
那么 System.out.println(this) 将打印A类自身引用的toString方法,如列,打印hello;
如果自身没有实现,则打印的是父类Object的toString方法;getClass().getName()
+ "@" +Integer.toHexString(hashCode()); 打印的是“类名@hascode”
方法,里面为一个对象的引用时,自动调用 toString 方法将对象打印出来,而如果重写了 tostring 方法则调用重写的toString方法。
因为 System.out.println() 的这个方法源码中调用了 String.valueOf(Objec
o)
public void println(Object x) {
String s = String.valueOf(x);
synchronized(this) {
print(s);
newLine();
}
}
而 String.valueOf(x) 的源码就是去调用该对象的 toString() 方法,源码如下:
public static String valueOf(Object obj) {
return (obj ==null) ? "null" : obj.toString();
}
对于 System.out.println(this):
this是这个类的引用,
比如说
class A{
public void run(){
System.out.println(this);
}
public String toString() {
return "hello";
}
}
那么 System.out.println(this) 将打印A类自身引用的toString方法,如列,打印hello;
如果自身没有实现,则打印的是父类Object的toString方法;getClass().getName()
+ "@" +Integer.toHexString(hashCode()); 打印的是“类名@hascode”
相关文章推荐
- Java学习笔记--System.out.println();
- JAVA学习笔记--关于System.out.println()
- Java学习笔记之关于System.out.println()的括号中的内容
- java,成员变量与方法参数或自定义的局部变量同名要用this,system.out.println(this)用法,
- java学习笔记(一)System.out.println探究
- Java应用程序中System.out.println输出中文乱码
- 在Java中,直接将类的对象使用system.out.println输出
- 浅谈Java中的System.out.println()
- Java调试的变迁:从System.out.println到log4j (轉一篇好文)
- Java调试的变迁:从System.out.println到log4j
- Java中System.out.println("Hello, World");深入剖析
- java小知识-将System.out.println到控制台的内容打印并保存在新的文件中(例如txt文件从)
- java中的System.out.println和System.err.println的区别
- java中的system.out.println()和JSP中out.println()区别
- java中的system.out.println()和JSP中out.println()区别
- Java System.out.println()输出重定向到文件
- java中的system.out.println()和JSP中out.println()区别
- 一个最简单的java程序,没有任何import 为什么还能System.out.println
- 【转】Java基础:System.out.println与System.err.println的区别
- 关于java三元运算符,(i%5==0)?System.out.println():System.out.print(" "); does not work!