Rumah > Java > javaTutorial > teks badan

Penjelasan terperinci tentang perbezaan antara lulus mengikut nilai dan lulus melalui rujukan di Jawa dan kesannya

WBOY
Lepaskan: 2024-01-30 09:08:06
asal
794 orang telah melayarinya

Penjelasan terperinci tentang perbezaan antara lulus mengikut nilai dan lulus melalui rujukan di Jawa dan kesannya

Lulus nilai dan lulus rujukan dalam Java adalah konsep penting yang mesti difahami oleh setiap pengaturcara Java. Artikel ini akan menerangkan perbezaan antara kedua-duanya secara terperinci dan memberikan contoh kod yang berkaitan untuk membantu pembaca memahami konsep ini dengan lebih baik.

Di Java, semua hantaran parameter dicapai dengan hantaran nilai. Iaitu, apabila kita lulus pembolehubah sebagai parameter kepada kaedah, apa yang sebenarnya dihantar kepada kaedah adalah salinan nilai pembolehubah. Oleh itu, sama ada jenis primitif atau jenis rujukan, apa yang diluluskan ialah salinan nilainya, bukan pembolehubah sebenar itu sendiri.

Pertama, mari kita lihat contoh lulus nilai. Katakan kita mempunyai swap kaedah mudah, yang digunakan untuk menukar nilai dua pembolehubah integer:

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

public static void main(String[] args) {
    int x = 1;
    int y = 2;
    swap(x, y);
    System.out.println("x = " + x);
    System.out.println("y = " + y);
}
Salin selepas log masuk

Hasil output selepas kod di atas dilaksanakan ialah:

x = 1
y = 2
Salin selepas log masuk

Ia boleh dilihat bahawa walaupun a dan b ditukar di dalam nilai kaedah swap, tetapi nilai pembolehubah x dan y tidak diubah dalam kaedah utama. Ini kerana dalam kaedah swap, kita hanya menukar nilai x dan y dengan menyalinnya, dan bukannya mengubah suai nilainya secara langsung.

Seterusnya, mari kita lihat contoh rujukan lewat. Pembolehubah jenis rujukan dalam Java merujuk kepada rujukan kepada objek, bukan objek itu sendiri. Apabila kita menghantar pembolehubah jenis rujukan sebagai parameter kepada kaedah, apa yang sebenarnya dihantar kepada kaedah adalah salinan rujukan, iaitu, salinan rujukan diluluskan.

Mari kita lihat contoh kod:

public static void changeName(Student student) {
    student.setName("Alice");
}

public static void main(String[] args) {
    Student s = new Student("Bob");
    System.out.println("Before change: " + s.getName());
    changeName(s);
    System.out.println("After change: " + s.getName());
}

class Student {
    private String name;

    public Student(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
Salin selepas log masuk

Hasil output selepas kod di atas dilaksanakan ialah:

Before change: Bob
After change: Alice
Salin selepas log masuk

Ia boleh dilihat bahawa dalam kaedah changeName, kita menukar sifat pembolehubah jenis rujukan yang diluluskan oleh pelajar. dalam dengan mengubahnya Keadaan objek diubah, supaya keadaan objek asal juga diubah dalam kaedah utama.

Ringkasnya, perbezaan antara hantaran nilai dan hantaran rujukan dalam Java ialah sama ada salinan nilai atau salinan rujukan diluluskan. Untuk pembolehubah jenis asas, salinan nilai diluluskan, dan pengubahsuaian pada salinan dalam kaedah tidak akan menjejaskan nilai pembolehubah asal manakala untuk pembolehubah jenis rujukan, salinan rujukan diluluskan dan pengubahsuaian pada salinan dalam kaedah akan mempengaruhi pembolehubah asal.

Dalam pengaturcaraan praktikal, adalah penting untuk memahami perbezaan antara lulus dengan nilai dan lulus dengan rujukan untuk mengelakkan tingkah laku yang tidak dijangka. Oleh itu, semasa menulis program Java, kita harus memilih cara yang sesuai untuk lulus parameter berdasarkan jenis parameter dan keperluan.

Saya harap artikel ini akan membantu pembaca memahami perbezaan antara lulus nilai dan lulus rujukan dalam Java, dan boleh memberikan sedikit panduan dalam pengaturcaraan sebenar.

Atas ialah kandungan terperinci Penjelasan terperinci tentang perbezaan antara lulus mengikut nilai dan lulus melalui rujukan di Jawa dan kesannya. 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
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!