-1

//我一直在尝试理解 to string 它是如何工作的以及它的主要功能是什么,但是我遇到了麻烦。就像下面的例子一样。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;
        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;
    }
4

5 回答 5

8

toString的目的在 API 中有明确记录:

返回对象的字符串表示形式。通常,toString 方法返回一个“以文本方式表示”该对象的字符串。结果应该是一个简洁但信息丰富的表示,易于人们阅读。建议所有子类重写此方法。

Object#toString() will produce:

Object 类的 toString 方法返回一个字符串,该字符串由对象作为实例的类的名称、at 符号字符“@”和对象的哈希码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串:

 getClass().getName() + '@' + Integer.toHexString(hashCode())

如果您在类调用中覆盖 toString,则默认 Object#toString() 将被 yourclass#toString() 替换。在您当前的代码中,如果您尝试打印 Item 实例,则输出将采用以下格式:

name +": $" + price+":" + qty;
于 2013-03-21T15:17:42.803 回答
1

toString通常是对象的用户友好/可读字符串表示。您可以将其用于调试、记录或向最终用户/客户端显示信息。

这是一个简短的教程,讨论如何以及何时使用 toString。

于 2013-03-21T15:17:29.857 回答
0

toString 是当 java 需要类对象的字符串表示时调用的函数。例如,如果您调用System.out.println(a);where a is of type ,将显示Item返回的值。toString此方法是其中的一部分,Object因此每个 java 对象都有它的一些默认实现。仍然在许多情况下,它的信息量不足,最好覆盖它。

于 2013-03-21T15:17:30.263 回答
0

toString提供了一个String表示Object

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);
于 2013-03-21T15:19:24.560 回答
0

我想将其toString()视为一种便利功能。每当您执行以下操作时:

MyObject m = ...//
System.err.println(m);

println(m)实际上是调用m.toString()以获取对象的人类可读表示。它是 each 固有的Object,因此您始终可以覆盖它以使其返回最能描述您自己的对象的字符串。

于 2013-03-21T15:20:11.340 回答