Pertukaran Primitif dalam Java: Menangani Had Pass-by-Value
Di Java, menghantar parameter kepada kaedah dilakukan mengikut nilai, yang mana bermakna perubahan yang dibuat kepada parameter dalam kaedah tidak ditunjukkan dalam pembolehubah asal. Ini boleh menjadi masalah apabila cuba menukar nilai jenis primitif, seperti integer.
Coretan kod di bawah menggambarkan isu:
<code class="java">public static void swap(int a, int b) { int temp = a; a = b; b = temp; }</code>
Selepas melaksanakan kaedah ini, nilai a dan b kekal tidak berubah, kerana kaedah tersebut tidak mempunyai akses kepada rujukan asal pembolehubah ini.
Untuk mengatasi had ini, satu pendekatan ialah menggunakan "helah" yang memanfaatkan pengendali tugasan Java. Kod berikut memberikan contoh:
<code class="java">public static int swap(int a, int b) { return a; // usage: y = swap(x, x=y); }</code>
Kaedah ini bergantung pada susunan penilaian dalam operasi tugasan x=y. Pertama, x dihantar ke kaedah swap(), kemudian y ditugaskan kepada x, menukar nilainya dengan berkesan. Pulangan a hanya mengembalikan nilai awal a, yang kini bersamaan dengan y.
Pendekatan lain ialah mencipta kaedah generik yang boleh menukar sebarang bilangan objek daripada jenis yang sama:
<code class="java">public static <T> T swap(T... args) { return args[0]; // usage: z = swap(a, a=b, b=c, ... y=z); }</code>
Kaedah ini mengambil bilangan argumen yang berubah-ubah dan mengembalikan elemen pertama. Ia menggunakan prinsip yang sama seperti contoh sebelumnya, di mana penugasan argumen seterusnya menukar nilainya dengan berkesan.
Dengan menggunakan teknik ini, pembangun boleh mencapai gelagat pertukaran yang diingini, walaupun Java melepasi parameter mengikut nilai.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menukar Nilai Primitif di Jawa Walaupun Had Nilai Laluan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!