何时使用toString()方法

时间:2010-02-24 20:17:40

标签: java tostring

这听起来很基本......有人可以解释一下toString()方法的用法以及何时有效使用它?

在谷歌搜索过但找不到任何好的资源。

9 个答案:

答案 0 :(得分:23)

在大多数语言中,toString或等效方法只保证对象可以用文本表示。

这对于日志记录,调试或任何其他需要能够将您遇到的任何对象呈现为字符串的情况特别有用。

对象通常实现自定义toString行为,以便该方法实际上告诉您有关对象实例的信息。例如,Person类可能会覆盖它以返回“姓氏,名字”,而Date类将显示根据某些默认设置(例如当前用户界面文化)格式化的日期。

答案 1 :(得分:3)

在某些情况下,人们希望覆盖类的toString方法(其中大部分已在现有答案中提及),但是我需要在其中显式调用toString的最常见情况之一一个对象是在使用StringBuilder构造一个String时。

public String createString(final String str) {
  final StringBuilder sb = new StringBuilder(str);
  sb.append("foo");
  sb.append("bar");
  return sb.toString();
}

答案 2 :(得分:2)

  1. 您想要显示一个对象,并且不想在之前检查它是否为空。
  2. 你想连接字符串而不考虑特殊属性,只需向程序员提供一个默认属性。
  3. 因此:

    out.println("You are " + user);
    
    如果user为null或者toString为此(存在的)实例显示“James”,则

    将显示“You are null”或“You are James”。

答案 3 :(得分:1)

假设.NET或Java:

一般情况下,当你想要一个类的文本表示时(假设它对你的类有意义),你应该重载ToString()。

答案 4 :(得分:1)

您可以通过覆盖类来对类使用toString(),以提供对象的一些有意义的文本表示。

例如,您可以在Person类上覆盖toString()以返回名字和姓氏。

答案 5 :(得分:0)

当您需要将数据类型更改为字符串时,应使用字符串。对于像int这样的内置类型,字符串表示就是你所期望的。即

  int i = 5;
  string s = i.ToString(); //s now equals "5" 

为大多数复杂类型和所有用户创建的类型提供字符串“5”,您需要重载tostring方法,否则您将只获取该类的名称。 To string允许您使用自己的对象将复杂的格式化构建到.net中。您可以像datetime类一样提供复杂的格式化程序,以便灵活地使用您自己的类型。

答案 6 :(得分:0)

toString()可用于避免十六进制地址,因此要克服此问题,您需要覆盖toString(),然后您将获得原始文本格式的数据。

答案 7 :(得分:0)

当您打印参考变量时,将执行以下任务。

  • 如果引用变量包含null,则将显示空值。
  • 如果引用变量包含对象的地址,那么toString()方法将由JVM自动调用。

默认toString() Object.class将打印:

  

类名@ HexadecimalOfHashCode

您可以在类中重写此方法以显示一些有意义的String。 通常toString()方法用于打印对象的内容。此方法已在许多java内置类中重写,如StringStringBufferinteger等。

答案 8 :(得分:0)

当我们必须显示我们通过构造函数初始化的字段值以及不使用任何getter时显示的内容时使用它。

    import Test.Date;
public class Employ {

private String firstname;
private String lastname;
private Date DOB;
private Date DOH;
public Employ(String name,String lastname,Date DOB,Date DOH)
{
    this.firstname=name;
    this.lastname=lastname;
    this.DOB=DOB;
    this.DOH=DOH;

}

    public  String toString(){

    return String.format("%s %s Birthday %s Hired %s",firstname,lastname,DOB,DOH);      
        }
public static void main (String args[])
{
    Date dob= new Date(12,3,1992);
    Date doh= new Date(10,6,2005);

    Employ em= new Employ("BOB", "Wrigh", dob,doh);

    System.out.println(em);

}

}