2013-11-10 45 views
1

我在编写代码时遇到了一些奇怪的字符串连接语法,并且很惊讶地发现它编译了。Java:奇怪的字符串连接语法

quota.setText("Cloud storage: " + used + " (" + + + + quotaUsed/quotaAvailable * 100 + " of " + total);

奇怪的部分是围绕着四个+运营商(我本来打算把他们之间更多的字符串,我很惊讶,没有红色波浪线在它们下面。quotaUsedquotaAvailablelong S和usedtotal都是字符串。

谁能解释系统将如何解释这句话?

+0

我认为它可能会应用一次'++'运算符和一次'+'运算符(使值为正)并应用连接。我不确定,需要查看输出结果。 – blueblob

+1

@blueblob - 错误的猜测。 '++'操作符在它的中间不能有空格。 –

+0

@blueblob一元'+'不会“使值为正值”。如果'x'是负数,'+ x'仍然是负值。 'Math.abs(x)'会使它正确。 – ajb

回答

4

第一+将是对孔卡tenation operator,而接下来的三个简单地是the unary + operator,在这种情况下基本上没有任何操作。请注意,你将在你的分数上执行整数除法,所以如果你把它写成

(100 * quotaUsed)/quotaAvailable 

你会得到更好的精度。

+0

谢谢,我听说过但从未使用过一元加运算符。这样的答案有一个很好的例子:http://stackoverflow.com/a/2624541/473637 – Jeshurun