System.out.println()
和ToString()
在Java中有什么联系?例如:
public class A {
String x = "abc";
public String toString() {
return x;
}
}
public class ADemo {
public static void main(String[] args) {
A obj = new A();
System.out.println(obj);
}
}
如果main类运行,它会给出“abc”
的输出。当我删除重写ToString()
的代码时,它给出的输出为“A@659E0BFD”
。那么,有人能解释一下当我将obj
对象引用作为参数传递给它时 ;system.out.println()
的工作原理是什么吗?它是否与ToString()
方法完全连接?
system.out
是printstream
。Printstream定义了println()
函数的几个版本,以处理数字、字符串等。使用任意对象作为参数调用printstream.println()
时,将获得作用于对象
的函数的版本。此版本的函数
...调用第一个string.ValueOf(x)以获取打印对象的字符串值...
查看string.valueOf(Object)
,我们看到它返回
如果参数为null,则为等于“null”的字符串;否则,返回obj.toString()的值。
因此,长话短说,system.out.println(someObject)
调用该对象的ToString()
函数将对象转换为字符串表示形式。
如果您的对象定义了自己的ToString()
函数,那么将调用该函数。如果您不提供这样的函数,那么您的对象将从它的父类之一继承toString()
。在最坏的情况下,它将继承object.toString()
。该版本的toString()被定义为返回
一个字符串,由对象作为其实例的类的名称、at符号字符`@'和对象的散列代码的无符号十六进制表示形式组成。
或者,换句话说:
getClass().getName() + '@' + Integer.toHexString(hashCode())
因此,当您对一个没有定义自己版本的toString()的对象调用system.out.println()
时,您可能会得到类似于“classname@somehexnumber”的object
版本。
问题内容: 假设我要打印5行。哪种方法最好(提高性能和可读性)。 要么 是偏好问题还是一个优于另一个问题。使用第二种方法似乎可以节省很多时间。 问题答案: 有一个 功能性 两者之间的区别。第一个版本使用平台的首选行分隔符输出换行符。第二个版本输出换行符,这在Windows或Mac OS上可能是不合适的。 这比任何实际或想象的性能优势都重要。 关于性能,以及为什么每个人似乎都说“已经足够”了。 两种
问题内容: 我的一位教授曾经说过,绝不应该执行以下代码: System.out.println(object.toString()); 他说(我相信引用为“ Effective Java”)会引起重复调用。由于print语句调用对象的toString方法,因此两次调用toString方法的效率较低。首选方法是仅使用: System.out.println(object); 显然,这种方式在代码中看
问题内容: 我正在使用PMD插件进行日食,使用说明时出现错误: 使用System。(out | err).print,请考虑使用记录器。 我的问题是-什么是记录仪?如何用于打印到屏幕上?为什么会更好? 问题答案: 请参阅log4j的简短介绍。 问题在于用于打印调试或诊断信息。这是一种不好的做法,因为您无法轻松更改日志级别,关闭日志级别,对其进行自定义等。 但是,如果您合法地用于向用户打印信息,则可
问题内容: 在Javascript中,每个对象都有一个valueOf()和toString()方法。我本以为每当需要进行字符串转换时,都会调用toString()方法,但显然它被valueOf()压倒了。 例如,代码 将打印 例如,如果x是一个复数,这会让我感到反感。例如,我希望valueOf()给出其大小,但是每当我想转换为字符串时,我都会想要类似“ a + bi”的东西。而且我不想在隐含字符串
本文向大家介绍Java Enum toString()方法与示例,包括了Java Enum toString()方法与示例的使用技巧和注意事项,需要的朋友参考一下 枚举类方法 toString()方法在java.lang包中可用。 toString()方法用于检索此枚举常量的名称,该常量在其枚举声明中声明。 toString()方法与Enum类的方法相似,但大多数由程序员使用,与Enum类的方法相
本文向大家介绍Java StackTraceElement toString()方法与示例,包括了Java StackTraceElement toString()方法与示例的使用技巧和注意事项,需要的朋友参考一下 StackTraceElement类方法 toString()方法在java.lang包中可用。 toString()方法用于将堆栈跟踪元素表示为字符串,或者可以说这是堆栈跟踪元素的字