我不知道如果在 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++ 曾經存在問題。使用增量或減量時,有時需要將復雜表達式括在括號中。感謝您的任何提示。
1 回答

猛跑小豬
TA貢獻1858條經驗 獲得超8個贊
您的兩個問題的答案都是“是的,您可以”。和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 節)來縮小總和。后綴增量表達式的值是存儲新值之前變量的值。
添加回答
舉報
0/150
提交
取消