当前位置: 首页 > 知识库问答 >
问题:

“System.out.println()”与“to String()”(Java中得连接

卜阳
2023-03-14

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()方法完全连接?

共有1个答案

袁志专
2023-03-14

system.outprintstream。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()方法用于将堆栈跟踪元素表示为字符串,或者可以说这是堆栈跟踪元素的字