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

Adakah Java Pass Primitives melalui Rujukan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-07 17:45:021042semak imbas

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);
    }
}

Kod ini mencetak:

Toy number in play 5
Toy number in play after increment 6
Toy number in main 5

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;
}
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);
}

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;
}

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]);
}

Atas ialah kandungan terperinci Adakah Java Pass Primitives melalui Rujukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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