Overblog Tous les blogs Top blogs Technologie & Science Tous les blogs Technologie & Science
Editer l'article Suivre ce blog Administration + Créer mon blog
MENU

Java中的toString

16 Août 2014

Q:toString() 方法实现了什么功能?

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

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

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

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

A:见代码清单1.

代码清单1

public class Employee

{

private String name;

private int age;

public Employee(String name, int age)

{

this.name = name;

this.age = age;

}

@Override

public String toString()

{

return name + ": " + age;

}

}

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

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

字符串和 StringBuilder

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

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

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

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

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

Publicité

来源:

http://www.laixintao.com/posts/837

Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article