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

时间:2013-07-23 19:47:18

标签: 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++);

4 个答案:

答案 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中进行赋值,因此会出现编译错误。