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();
}
在这段代码中,为什么要使用StringBuffer、Formatter ?如何在类中自动调用toString()而不需要在main()中调用它?
你是对的,代码可以更简洁地写成
return String.format("$%.2f%n%d dollars%n%d quarters%n%d dimes%n%d pennies%n",
total, dollars, quarters, dimes, pennies);
"$"有什么用
在这里没有特殊的含义(作为格式说明符)。它只是打印一个美元符号。所以你会得到一个类似"$2.00"的输出。
以及如何在类中自动调用toString()而不使其调用main()
大多数生成文本输出的方法(如System.out.println)
)都将任何类型的Object作为参数,并自己调用toString
。这是一个方便,也照顾null
(通过打印"null",而不是崩溃与NullPointerException)。