Java “有什么用?”$&引用;在toString()的out.format中,以及toString()是如何工作的?

Java “有什么用?”$&引用;在toString()的out.format中,以及toString()是如何工作的?,java,tostring,Java,Tostring,在这段代码中,为什么要使用StringBuffer和Formatter? 以及如何在类中自动调用toString(),而不必在main()中调用它?您是对的,代码可以编写得更简洁,如下所示: public String toString() { StringBuffer result = new StringBuffer(); Formatter out = new Formatter(result); out.format("$%.2f%n%d dollars%n%d quarters

在这段代码中,为什么要使用StringBuffer和Formatter?
以及如何在类中自动调用toString(),而不必在main()中调用它?

您是对的,代码可以编写得更简洁,如下所示:

public String toString() 
{
 StringBuffer result = new StringBuffer();
 Formatter out = new Formatter(result);
 out.format("$%.2f%n%d dollars%n%d quarters%n" +"%d dimes%n%d pennies%n",
 total, dollars, quarters, dimes, pennies);
 return result.toString();
}
“$”有什么用

它在这里没有特殊意义(作为格式说明符)。它只是打印一个字面上的美元符号。所以你会得到一个像“$2.00”这样的输出

以及如何在类中自动调用toString(),而不必在main()中调用它


大多数生成文本输出的方法(如
System.out.println)
将任何类型的对象作为参数,并自己调用
toString
。这是一种方便,它还可以处理
null
(通过打印“null”而不是与NullPointerException崩溃)。

有一些方法,如
System.out.print
System.out.println
,它们将自动调用作为参数传递的对象的
toString
方法。还有,
“$”
不是格式中的特殊字符。
return String.format("$%.2f%n%d dollars%n%d quarters%n%d dimes%n%d pennies%n",
    total, dollars, quarters, dimes, pennies);