0

我正在尝试做,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没有?

PS:

我知道我可以这样做:

person p1 = new person();
    int myAge = p1.age();
    p1.age(myAge++);
4

4 回答 4

6

因为

x++;

简称

x = x + 1;

在你的情况下

p1.age() = p1.age() + 1; // ERROR

并且您不能在分配的左侧进行方法调用。

于 2013-07-23T19:49:17.177 回答
3

method()++方法method() = method() + 1

这是错误的,因为您不能为方法赋值

于 2013-07-23T19:50:01.837 回答
0

++,您使用的方式,是后缀运算符。它将使用该值,然后将其递增。

方法返回一个值。不是一个值。

来自Java 语言规范

后缀表达式的结果必须是可转换(第 5.1.8 节)为数字类型的类型的变量,否则会发生编译时错误。

于 2013-07-23T19:50:28.247 回答
0

p1.age返回一个值,但增量运算符 ++ 读取该值并尝试分配它。方法不能在 Java 中进行赋值,因此会出现编译器错误。

于 2013-07-23T19:50:56.277 回答