Java 中的自增运算符可以使用什么类型的操作数?

我不知道如果在 Java 中的表达式上应用增量运算符会发生什么。


int ai[] = new ai[10];

ai[0]++;


// ***


class Car {

  public int yearMade = 0;

}


class Person {

  public Car myCar = new Car();

}


Person p = new Person();

p.myCar.yearMade++;

您可以按照第一个示例所示的方式递增数组的元素吗?


您能否按照我在第二个示例中所示的方式增加类中的字段(我确实了解封装和 getters/setters,我的问题是面向语法语义的)?


我记得 C/C++ 的时代。例如,p -> x++ 曾经存在问题。使用增量或减量时,有时需要将复杂表达式括在括号中。


感谢您的任何提示。


潇潇雨雨
浏览 82回答 1
1回答

猛跑小猪

您的两个问题的答案都是“是的,您可以”。和p.myCar.yearMade都是ai[0]变量(分别是实例变量和局部变量),因此可以用作这四个运算符中任何一个的操作数。4.12. 变量变量是一个存储位置,并且具有关联的类型,有时称为其编译时类型,即原始类型(第 4.2 节)或引用类型(第 4.3 节)。变量的值可通过赋值 (§15.26) 或前缀或后缀 ++(递增)或 --(递减)运算符进行更改(§15.14.2、§15.14.3、§15.15.1、§15.15.2) )。...15.14.2。后缀自增运算符 ++在运行时,如果操作数表达式的求值突然完成,则后缀增量表达式也会出于同样的原因突然完成,并且不会发生增量。否则,将值 1 添加到变量的值中,并将总和存储回变量中。在相加之前,对值 1 和变量的值执行二进制数值提升(第 5.6.2 节)。如有必要,在存储变量之前,可以通过缩小原始转换(第 5.1.3 节)和/或对变量的类型进行装箱转换(第 5.1.7 节)来缩小总和。后缀增量表达式的值是存储新值之前变量的值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java