如何在Java中使用toString方法?

问题

任何人都可以向我解释一下在474772436类中定义的toString()方法的概念吗?它是如何使用的,它的目的是什么?


#1 热门回答(77 赞)

来自Object.toString()docs:

返回对象的字符串表示形式。通常,toString方法返回一个"文本表示"此对象的字符串。结果应该是简洁但信息丰富的表示,便于人们阅读。建议所有子类都覆盖此方法。类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符"@"以及对象的哈希码的无符号十六进制表示组成。换句话说,此方法返回一个等于值的字符串:

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

例:

String[] mystr ={"a","b","c"};
System.out.println("mystr.toString: " + mystr.toString());

output:- mystr.toString: [Ljava.lang.String;@13aaa14a

#2 热门回答(38 赞)

使用String toString:每当你需要在String表单中探索名为value的构造函数时,你可以简单地使用String toString ...作为一个例子......

package pack1;

import java.util.*;

class Bank {

    String n;
    String add;
    int an;
    int bal;
    int dep;

    public Bank(String n, String add, int an, int bal) {

        this.add = add;
        this.bal = bal;
        this.an = an;
        this.n = n;

    }

    public String toString() {
        return "Name of the customer.:" + this.n + ",, "
                + "Address of the customer.:" + this.add + ",, " + "A/c no..:"
                + this.an + ",, " + "Balance in A/c..:" + this.bal;
    }
}

public class Demo2 {

    public static void main(String[] args) {

        List<Bank> l = new LinkedList<Bank>();

        Bank b1 = new Bank("naseem1", "Darbhanga,bihar", 123, 1000);
        Bank b2 = new Bank("naseem2", "patna,bihar", 124, 1500);
        Bank b3 = new Bank("naseem3", "madhubani,bihar", 125, 1600);
        Bank b4 = new Bank("naseem4", "samastipur,bihar", 126, 1700);
        Bank b5 = new Bank("naseem5", "muzafferpur,bihar", 127, 1800);
        l.add(b1);
        l.add(b2);
        l.add(b3);
        l.add(b4);
        l.add(b5);
        Iterator<Bank> i = l.iterator();
        while (i.hasNext()) {
            System.out.println(i.next());
        }
    }

}

...将这个程序复制到你的eclipse中,然后运行它...你会得到关于String toString的想法......


#3 热门回答(32 赞)

ThetoString()方法返回对象的文本表示。基本实现已包含在java.lang.Object中,因为所有从java.lang.Objectit继承的对象都保证Java中的每个对象都具有此方法。

覆盖该方法总是一个好主意,特别是在调试方面,因为调试器通常会根据toString()方法的结果显示对象。所以使用一个有意义的实现,但使用它的技术目的。应用程序逻辑应该使用getter:

public class Contact {
  private String firstName;
  private String lastName;
  public Contact (String firstName, String lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
  }
  public String getFirstName() {return firstName;}
  public String getLastName() {return lastName;}

  public String getContact() {
    return firstName + " " + lastName;
  }

  @Override
  public String toString() {
    return "["+getContact()+"]";
  }
}