在 toString() 的 out.format 中"$"有什么用,toString() 是如何工作的?


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)。

最新更新