Rumah > Java > javaTutorial > teks badan

Bagaimanakah anda boleh menukar nilai primitif di Jawa, memandangkan batasannya untuk lulus mengikut nilai?

Barbara Streisand
Lepaskan: 2024-10-26 15:40:03
asal
276 orang telah melayarinya

How can you swap primitive values in Java, given its limitations of passing by value?

Menukar Primitif dalam Java: Menangani Had Lulus Mengikut Nilai

Di Java, di mana parameter diluluskan mengikut nilai, cuba menukar primitif nilai menggunakan pendekatan tradisional boleh menjadi sia-sia. Mari kita mendalami coretan kod yang menunjukkan perkara ini:

<code class="java">public class SwapPrimitives {

    public static void swap(int a, int b) {
        int temp = a;
        a = b;
        b = temp;
    }

    public static void main(String[] args) {
        int x = 5;
        int y = 10;
        swap(x, y);
        System.out.println("x: " + x); // Output: 5
        System.out.println("y: " + y); // Output: 10
    }
}</code>
Salin selepas log masuk

Niat kod ini adalah untuk menukar nilai x dan y, tetapi seperti yang anda boleh perhatikan daripada output, nilainya kekal tidak berubah. Ini kerana Java melepasi nilai, yang bermaksud bahawa salinan nilai primitif dicipta dan dihantar ke fungsi swap. Sebarang perubahan yang dibuat pada salinan ini dalam fungsi swap tidak mempunyai kesan ke atas pembolehubah asal.

Untuk mengatasi had ini dan mencapai pertukaran, kami boleh menggunakan teknik yang memanfaatkan kefungsian pengembalian kaedah Java. Dengan menambahkan pernyataan pulangan pada fungsi swap dan menetapkan semula hasilnya kepada pemanggil, secara tidak langsung kita boleh menukar nilai:

<code class="java">public static int swap(int a, int b) {  // usage: y = swap(x, x=y);
    return a;
}

public static void main(String[] args) {
    int x = 5;
    int y = 10;
    y = swap(x, x = y);
    System.out.println("x: " + x); // Output: 10
    System.out.println("y: " + y); // Output: 5
}</code>
Salin selepas log masuk

Dalam kod yang diubah suai ini, fungsi swap mengembalikan nilai a. Walau bagaimanapun, tujuan utamanya adalah untuk membenarkan pemanggil menetapkan semula nilai yang dikembalikan kepada hujah pertama (dalam kes ini, x). Ini dengan berkesan mencapai pertukaran x dan y. Corak penggunaan untuk fungsi ini mungkin agak berlawanan dengan intuisi, tetapi ia menyediakan penyelesaian yang berdaya maju untuk menukar primitif dalam Java.

Jika anda inginkan pendekatan yang lebih generik, anda boleh mencipta kaedah yang boleh menukar sebarang bilangan objek daripada jenis yang sama:

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

public static void main(String[] args) {
    int x = 5;
    int y = 10;
    int z = 15;
    z = swap(x, x = y, y = z);
    System.out.println("x: " + x); // Output: 15
    System.out.println("y: " + y); // Output: 10
    System.out.println("z: " + z); // Output: 5
}</code>
Salin selepas log masuk

Dengan menggunakan teknik ini, anda boleh menukar primitif dalam Java dengan berkesan, walaupun tiada rujukan lulus.

Atas ialah kandungan terperinci Bagaimanakah anda boleh menukar nilai primitif di Jawa, memandangkan batasannya untuk lulus 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!