toString方法如何工作?

时间:2013-03-21 15:15:28

标签: java

//我一直试图理解字符串如何工作以及它的主要功能是什么,但我遇到了麻烦。喜欢以下ex​​amaple。 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;
    }

5 个答案:

答案 0 :(得分:7)

API中明确记录了toString的目的:

  

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

Object#toString() will produce:
  

Object类的toString方法返回一个由。组成的字符串   对象是实例的类的名称,at-sign   字符“@”,以及散列的无符号十六进制表示   对象的代码。换句话说,此方法返回一个相等的字符串   价值:

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

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

name +": $" + price+":" + qty;

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分: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);

答案 4 :(得分:0)

我想将toString()视为一种便利功能。每当你做类似的事情时:

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

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