我正在尝试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++);
答案 0 :(得分:6)
由于
x++;
是
的缩写x = x + 1;
在你的情况下将是
p1.age() = p1.age() + 1; // ERROR
并且您无法在作业的左侧进行方法调用。
答案 1 :(得分:3)
method()++
表示method() = method() + 1
这是错误的,因为您无法为方法
指定值答案 2 :(得分:0)
++,你使用的方式是一个后缀运算符。 它将使用该值,然后递增它。
方法返回一个值。不是一个价值。
来自Java Language Specification:
后缀表达式的结果必须是可转换(§5.1.8)到数值类型的类型的变量,否则会发生编译时错误。
答案 3 :(得分:0)
p1.age
返回一个值,但增量运算符++读取该值并尝试分配它。方法不能在Java中进行赋值,因此会出现编译错误。