这可能是一个愚蠢的问题,但我不知道为什么会这样。我写了以下代码片段。
public class Test {
public static void main(String... str)
{
int y = 9;
int z = +++y; //unexpected type required:variable found:value
int w = +-+y; // Not Error
}}
为什么+ - + y起作用而+++不起作用?
答案 0 :(得分:7)
+++y
被解释为++
运算符,后跟+y
。
+y
与-y
一样有效,但++
运算符需要对变量进行操作(它不能递增值),+y
被认为是值(执行加法操作)。
+-+y
为0 + (0 - (0 + y))
,并且它没有增量或减量运算符,因此即使操作将整个表达式转换为值(而不是变量引用),它也没有效果
答案 1 :(得分:3)
在Java中,字符+++
表示++
,后跟+
,它们是两个不同的运算符。另一方面,没有运算符+-
,因此字符+-+
表示+
,然后是-
,然后是+
。
如果您想要使用这些运算符,还有~
,这是二进制文件。您可以使用运算符+
,-
和~
构建任意链,只要它们不包含++
或--
。