这听起来很基本......有人可以解释一下toString()
方法的用法以及何时有效使用它?
在谷歌搜索过但找不到任何好的资源。
答案 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)
因此:
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)
当您打印参考变量时,将执行以下任务。
toString()
方法将由JVM自动调用。默认toString()
Object.class
将打印:
类名@ HexadecimalOfHashCode
您可以在类中重写此方法以显示一些有意义的String。
通常toString()
方法用于打印对象的内容。此方法已在许多java内置类中重写,如String
,StringBuffer
,integer
等。
答案 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);
}
}