Rumah > Java > javaTutorial > Adakah Java Pass Primitives melalui Rujukan?

Adakah Java Pass Primitives melalui Rujukan?

Mary-Kate Olsen
Lepaskan: 2024-11-07 17:45:02
asal
1052 orang telah melayarinya

Does Java Pass Primitives by Reference?

Pass by Reference for Primitives in Java

Java menggunakan nilai pass by, tidak seperti C , yang menggunakan pass by reference. Ini boleh mencipta senario di mana mengubah suai jenis data primitif (cth., int, float) dalam kaedah tidak menjejaskan nilainya di luar kaedah.

Pertimbangkan kod Java ini:

public class XYZ {
    public static void main() {
        int toyNumber = 5;
        XYZ temp = new XYZ();
        temp.play(toyNumber);
        System.out.println("Toy number in main " + toyNumber);
    }

    void play(int toyNumber) {
        System.out.println("Toy number in play " + toyNumber);
        toyNumber++;
        System.out.println("Toy number in play after increment " + toyNumber);
    }
}
Salin selepas log masuk

Kod ini mencetak:

Toy number in play 5
Toy number in play after increment 6
Toy number in main 5
Salin selepas log masuk

Pembolehubah toyNumber tidak diubah suai di luar kaedah play() kerana ia diluluskan oleh nilai.

Alternatif untuk Dilalui melalui Rujukan dalam Java:

Untuk meniru C lulus melalui rujukan dalam Java untuk primitif, beberapa pilihan tersedia:

1. Pembolehubah Ahli Awam:

Buat kelas dengan pembolehubah ahli awam untuk toyNumber dan hantar rujukan kepada kelas.

class MyToy {
    public int toyNumber;
}
Salin selepas log masuk
void play(MyToy toy) {
    System.out.println("Toy number in play " + toy.toyNumber);
    toy.toyNumber++;
    System.out.println("Toy number in play after increment " + toy.toyNumber);
}
Salin selepas log masuk

2. Nilai Pulangan:

Daripada lulus melalui rujukan, pulangkan nilai yang diubah suai daripada kaedah.

int play(int toyNumber) {
    System.out.println("Toy number in play " + toyNumber);
    toyNumber++;
    System.out.println("Toy number in play after increment " + toyNumber);
    return toyNumber;
}
Salin selepas log masuk

Dalam kaedah utama, kemas kini toyNumber menggunakan nilai yang dikembalikan.

3. Pembolehubah Kelas/Statik:

Jika kaedah play() dan main() adalah sebahagian daripada kelas yang sama, tukarkan toyNumber kepada pembolehubah ahli kelas.

4. Tatasusunan Satu Elemen:

Ini ialah penggodaman tetapi memerlukan menghantar tatasusunan elemen tunggal dan mengubah suai nilainya.

void play(int[] toyNumber) {
    System.out.println("Toy number in play " + toyNumber[0]);
    toyNumber[0]++;
    System.out.println("Toy number in play after increment " + toyNumber[0]);
}
Salin selepas log masuk

Atas ialah kandungan terperinci Adakah Java Pass Primitives melalui Rujukan?. 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