Rumah > Java > javaTutorial > Bagaimanakah Anda Boleh Menukar Pembolehubah Primitif dalam Java Apabila Parameter Passing adalah mengikut Nilai?

Bagaimanakah Anda Boleh Menukar Pembolehubah Primitif dalam Java Apabila Parameter Passing adalah mengikut Nilai?

Linda Hamilton
Lepaskan: 2024-10-27 04:51:30
asal
554 orang telah melayarinya

How Can You Swap Primitive Variables in Java When Parameter Passing is by Value?

Menukar Pembolehubah Primitif dalam Java: Mengatasi Pelulusan Nilai

Dalam Java, lulus parameter secara semula jadi oleh nilai, yang menimbulkan cabaran apabila cuba menukar pembolehubah primitif dalam kaedah . Pelaksanaan naif, seperti:

<code class="java">void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
}</code>
Salin selepas log masuk

sebenarnya tidak akan mengubah suai pembolehubah asal di luar kaedah. Untuk menangani perkara ini, berikut ialah dua pendekatan yang tidak konvensional:

Corak Tugaskan Kembali

Teknik ini membolehkan pertukaran dengan memanfaatkan susunan operasi dalam panggilan kaedah:

<code class="java">int swap(int a, int b) {  // usage: y = swap(x, x=y);
    return a;
}</code>
Salin selepas log masuk

Apabila memanggil swap(x, x=y), nilai x akan dihantar ke swap sebelum penugasan kepada x. Oleh itu, apabila a dikembalikan dan ditugaskan kepada y, ia menukar nilai x dan y secara berkesan.

Penukar Generik dengan Parameter Variadik

Untuk penyelesaian yang lebih umum, kaedah generik boleh ditakrifkan yang boleh menukar sebarang bilangan objek daripada jenis yang sama:

<code class="java"><T> T swap(T... args) {   // usage: z = swap(a, a=b, b=c, ... y=z);
    return args[0];
}</code>
Salin selepas log masuk

Memanggil kaedah ini sebagai z = swap(a, a=b, b=c) akan menukar nilai a, b dan c , memberikan nilai akhir kepada z.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menukar Pembolehubah Primitif dalam Java Apabila Parameter Passing adalah mengikut Nilai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan