0

我对以下代码有疑问:

TextView.setText("" + ((System.currentTimeMillis() - this.startTime) / 1000));

为什么必须在 setText 方法中包含“”?

4

2 回答 2

2

setText只接受字符串,但是((System.currentTimeMillis() - this.startTime) / 1000)是一个数字。

您总是可以使用或您拥有的任何方法手动转换它toString(),但有时利用以下事实“更简单”:当您将内容添加到字符串时,第二项会隐式转换为字符串。

那是,

"a" + 5

将评估为

"a" + "5"

这是

"a5"

相似地,

"" + 5
"" + "5"
"5"
于 2013-07-07T21:40:38.050 回答
1

原因是TextView.setText(int resId)也存在。所以如果你只是调用

TextView.setText((System.currentTimeMillis() - this.startTime) / 1000);

当找不到资源时,您不会收到编译时错误,而是运行时错误。如果您希望参数被视为String必须转换它,那么一种方法是String通过附加到来强制创建 a ""

于 2013-07-07T22:28:32.333 回答