Java toString方法是如何工作的?
//我一直在试图理解to字符串是如何工作的,它的主要功能是什么,但我遇到了麻烦。就像下面的例子一样。toString方法到底做什么Java toString方法是如何工作的?,java,Java,//我一直在试图理解to字符串是如何工作的,它的主要功能是什么,但我遇到了麻烦。就像下面的例子一样。toString方法到底做什么 public class Item { private String name; private int price; private int qty; public Item() { } public Item(String n, int p, int q){ this.name=n;
public class Item {
private String name;
private int price;
private int qty;
public Item() {
}
public Item(String n, int p, int q){
this.name=n;
this.price=p;
this.qty=q;
}
public String getName() {
return name;
}
public int getPrice() {
return price;
}
public int getQty() {
return qty;
}
public String toString() {
return name +": $" + price+":" + qty;
}
toString
通常是对象的用户友好/可读字符串表示形式。您可以使用它进行调试、记录日志或向最终用户/客户端显示信息
下面是一个简短的讨论,讨论如何以及何时使用toString。每当java需要类对象的字符串表示时,都会调用toString函数。例如,如果调用
System.out.println(a)代码>如果项目类型为项目
,则将显示toString
返回的值。这个方法是对象的一部分,因此每个java对象都有它的一些默认实现。但在许多情况下,它的信息量不够,最好覆盖它。API中清楚地记录了它的用途:
返回对象的字符串表示形式。总的来说
toString方法返回一个字符串,该字符串“以文本形式表示”此
对象结果应该是简洁但信息丰富的表示
这对一个人来说很容易阅读。建议所有
子类重写此方法
类对象的toString方法返回一个字符串,该字符串由
对象作为实例的类的名称,at符号
字符“@”和哈希的无符号十六进制表示形式
对象的代码。换句话说,此方法返回一个等于
价值:
如果在类中重写toString,则对默认对象的调用#toString()将被类#toString()替换。在当前代码中,如果尝试打印项实例,则输出的格式将为:
name +": $" + price+":" + qty;
toString
提供了对象的字符串
表示形式
public class Person {
private String firstName;
private String lastName;
private Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getName() {
return this.firstName + " " + this.lastName;
}
public String toString() {
return this.firstName + " " + this.lastName;
}
}
想象一下这个类和以下调用:
System.out.println(aPerson.getName());
我们的toString
方法意味着我们可以简单地执行以下操作:
System.out.println(aPerson);
我想把toString()
看作是一个方便的函数。无论何时,只要你做以下事情:
MyObject m = ...//
System.err.println(m);
println(m)
实际上正在调用m.toString()
以获取对象的可读表示。它是每个对象所固有的,因此您可以始终重写它,让它返回一个最能描述您自己对象的字符串。在此基础上:应该说toString
可以用于完全复制对象。例如,Tile(intx,inty,intz)
会像这样打印:Tile[x=5][y=1][z=7]
。
System.out.println(aPerson);
MyObject m = ...//
System.err.println(m);