Java方法()++VS方法()+1

  • 本文关键字:方法 ++VS Java java
  • 更新时间 :
  • 英文 :


我正在尝试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中无法接受赋值,因此会出现编译器错误。

最新更新