在Java 中,參數傳遞本質上是按值傳遞的,這在嘗試在方法內交換原始變數時帶來了挑戰。簡單的實現,例如:
<code class="java">void swap(int a, int b) { int temp = a; a = b; b = temp; }</code>
實際上不會修改方法外部的原始變數。為了解決這個問題,這裡有兩種非常規的方法:
此技術允許透過利用方法呼叫中的操作順序進行交換:
<code class="java">int swap(int a, int b) { // usage: y = swap(x, x=y); return a; }</code>
何時呼叫swap(x, x=y),x 的值將在賦值給x 之前傳遞到swap 中。因此,當傳回 a 並將其指派給 y 時,它有效地交換了 x 和 y 的值。
對於更通用的解決方案,可以定義一個通用方法可以交換任意數量的相同類型的對象:
<code class="java"><T> T swap(T... args) { // usage: z = swap(a, a=b, b=c, ... y=z); return args[0]; }</code>
將此方法呼叫為z = swap(a, a=b, b=c) 將交換a、b 和c 的值,將最終值賦給z。
以上是當參數以值傳遞時,如何在 Java 中交換原始變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!