这可能是个愚蠢的问题,但我不知道为什么会这样。我编写了以下代码片段。
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 有效而 +++y 无效?
这可能是个愚蠢的问题,但我不知道为什么会这样。我编写了以下代码片段。
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 有效而 +++y 无效?
+++y
被解释为++
运算符后跟+y
.
+y
与原样一样有效-y
,但++
运算符希望对变量进行操作(它不能增加值),并且+y
被认为是一个值(执行了加法操作)。
+-+y
as 0 + (0 - (0 + y))
,并且其中没有递增或递减运算符,因此即使该操作将整个表达式转换为一个值(而不是变量引用),它也没有任何效果。
在 Java 中,字符+++
表示++
,后跟+
,它们是两个不同的运算符。另一方面,没有运算符+-
,所以字符的+-+
意思是+
, then -
, then +
。
如果你想玩这些运算符,还有~
,它是一个二进制 not。+
您可以使用运算符-
和构建任意链~
,只要它们不包含++
or --
。