Java 问答:终极父类(五)——toString()

字符串形式的表现

QtoString() 方法实现了什么功能?

AtoString() 方法将根据调用它的对象返回其对象的字符串形式,通常用于 debug。

Q:当 toString() 方法没有被覆盖的时候,返回的字符串通常是什么样子的?

A:当 toString() 没有被覆盖的时候,返回的字符串格式是 类名@哈希值,哈希值是十六进制的,举例说,假设有一个 Employee 类,toString() 方法返回的结果可能是 Empoyee@1c7b0f4d.

Q:能提供一个正确覆盖 toString() 方法的例子吗?

A:见代码清单1.

代码清单1:返回一个非默认的字符串形式

代码清单1声明了 Employee 类,被私有修饰符修饰的 nameage 变量,构造器将其初始化。该类覆盖了toString() 方法,并返回一个包含对象值和一个冒号的 String 对象。

字符串和 StringBuilder

当编译器遇到 name + ": " + age 的表达时,会生成一个 java.lang.StringBuilder 对象,并调用append() 方法来对字符串添加变量值和分隔符。最后调用 toString() 方法返回一个包含各个元素的字符串对象。

Q:如何得到字符串的表达形式?

A:根据对象的引用,调用引用的 toString() 。例如,假设 emp 包含了一个 Employee 引用,调用emp.toString() 就会得到这个对象的字符串形式。

QSystem.out.println(o.toString());System.out.println(o) 的区别是什么?

ASystem.out.println(o.toString());System.out.println(o) 两者的输出结果中都包含了对象的字符串形式。区别是,System.out.println(o.toString()); 是明确调用 toString() 方法,而System.out.println(o) 则是隐式调用了 toString()

Leave a comment

电子邮件地址不会被公开。 必填项已用*标注