簡體   English   中英

在方法調用期間修改參數時是否有任何保證?

[英]Are there any guarantees when modifying arguments during method invocation?

在Java中,當將參數傳遞給方法並方法調用期間修改傳遞的參數 ,它是否保證結果符合預期?
例如
a.method(++i); 等等

是否保證例如內部method變量i將具有更新值?

或者a.method(i++) Will method在遞增之后或之前得到i的值?

對於所有類似的情況也是如此。
我有點記得在C ++中禁止這是特定於實現的,但也許我記得錯了。

前綴/后綴增量/減量運算符的java語言規范:

...將值1添加到變量的值中,並將總和存儲回變量...前綴增量表達式的值是存儲新值后變量的值

...將值1添加到變量的值中,並將總和存儲回變量...后綴增量表達式的值是存儲新值之前的變量

我覺得很清楚。 該函數將在前綴的情況下獲得遞增的值,而不是在后綴的情況下。

在調用方法之前計算表達式++i

從Java語言規范的“方法調用的運行時評估”部分

......其次,評估參數表達式。 ...第五,創建新的激活幀,必要時執行同步,並將控制轉移到方法代碼。

從Java語言規范的“前綴增量運算符”部分

前綴增量表達式的值是存儲新值后變量的值。

在Java中沒有問題,方法將收到更新的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM