gst*_*low 0 java increment return-value
我注意到惊讶的行为:
我可以写:
Integer integer = 0;
integer++;
Run Code Online (Sandbox Code Playgroud)
但我不能这样写:
getInteger()++;
Run Code Online (Sandbox Code Playgroud)
如果
public static Integer getInteger(){
return 0;
}
Run Code Online (Sandbox Code Playgroud)
对我来说,两个片段看起来一样.
但第二个片段产生:
unexpected type
getInteger()++;
^
required: variable
found: value
Run Code Online (Sandbox Code Playgroud)
为什么第二种结构是禁止的?
通常在代码中我被迫编写像这样丑陋的结构:
obj.set(obj.get()+1);
Run Code Online (Sandbox Code Playgroud)
它看起来多余.
x++是不一样的x + 1.它的缩写x += 1,即x = x + 1; 增量,然后分配.所以getInteger()++意味着getInteger() = getInteger() + 1,没有任何意义.您将一个值添加到一个值,而不是递增变量.
除此之外,++工作int但不是Integer,但即使你回来了,int你不能增加它++:
class Test {
static public void main() {
getint()++;
}
static int getint() {
int a = 0;
return a;
}
}
Run Code Online (Sandbox Code Playgroud)
给
Test.java:3: error: unexpected type
getint()++;
^
required: variable
found: value
Run Code Online (Sandbox Code Playgroud)
(在C++中,您可以使用引用来完成此工作,但Java没有这些.)