我正在尝试Class.Method()++
,但它不起作用。
简单示例:
人员类别
public class person {
private int age;
public void age(int value) {
this.age = value;
}
public int age() {
return this.age;
}
}
在主类
以下语句得到关于p1.age()++
:的错误
public static void main(String[] args) {
person p1 = new person();
p1.age(p1.age()++); // Get an error
}
但以下操作很好:
public static void main(String[] args) {
person p1 = new person();
p1.age(p1.age()+1); // It works fine
}
主要问题:
为什么p1.age()++
有错误,而p1.age()+1
没有?
p.S:
我知道我能做到:
person p1 = new person();
int myAge = p1.age();
p1.age(myAge++);
因为
x++;
是的缩写
x = x + 1;
在你的情况下是
p1.age() = p1.age() + 1; // ERROR
你不能在赋值的左边有一个方法调用。
method()++
表示method() = method() + 1
这是错误的,因为您不能为方法分配值
++是一个后缀运算符。它将使用该值,然后递增。
方法返回一个值。不是值。
来自Java语言规范:
后缀表达式的结果必须是可转换(§5.1.8)为数字类型的变量,否则将发生编译时错误。
p1.age
返回一个值,但增量运算符++读取该值并尝试赋值。方法在Java中无法接受赋值,因此会出现编译器错误。