Rumah > Java > javaTutorial > Mengapa Medan Pembina Java Saya Mengembalikan Nilai Null atau Lalai?

Mengapa Medan Pembina Java Saya Mengembalikan Nilai Null atau Lalai?

Patricia Arquette
Lepaskan: 2024-12-04 20:33:18
asal
981 orang telah melayarinya

Why Are My Java Constructor Fields Returning Null or Default Values?

Kekeliruan mengenai Permulaan Medan dalam Pembina Java

Pembangun mungkin menghadapi situasi di mana medan diisytiharkan dan dimulakan dalam pembina kelas mengembalikan nilai null atau lalai apabila dipersoalkan. Tingkah laku ini berpunca daripada konsep membayang dalam Java.

Membayang dengan Pembolehubah Tempatan

Apabila pembolehubah tempatan diisytiharkan dalam pembina, mereka memiliki nama yang sama seperti pembolehubah contoh. Walau bagaimanapun, Java mengutamakan pembolehubah tempatan dalam skopnya, membayangi pembolehubah contoh. Pertimbangkan contoh berikut:

public class Sample {
    private String[] elements;
    private int capacity;

    public Sample() {
        int capacity = 10;
        String[] elements;
        elements = new String[capacity];
    }
}
Salin selepas log masuk

Dalam pembina ini, kapasiti pembolehubah tempatan dimulakan kepada 10, tetapi kapasiti pembolehubah contoh kekal tidak dimulakan, menghasilkan nilai lalai 0. Begitu juga, elemen pembolehubah tempatan ialah memberikan rujukan tatasusunan, tetapi elemen pembolehubah contoh kekal batal.

Membayang dengan Pembina Parameter

Parameter pembina juga boleh membayangi pembolehubah contoh dengan nama yang sama. Pengisytiharan parameter diutamakan, menjadikannya mustahil untuk mengakses pembolehubah contoh secara langsung. Untuk merujuk kepada pembolehubah contoh, gunakan nama yang layak dengan ungkapan utama ini, seperti dalam:

public Sample(int capacity) {
    this.capacity = capacity;
}
Salin selepas log masuk

Pengesyoran

Untuk mengelakkan kekeliruan, ini adalah amalan terbaik untuk menggunakan nama unik untuk pembolehubah tempatan, parameter pembina dan pembolehubah contoh apabila boleh. Ini menghalang pembayang tidak sengaja dan memastikan medan dimulakan seperti yang dimaksudkan.

Atas ialah kandungan terperinci Mengapa Medan Pembina Java Saya Mengembalikan Nilai Null atau Lalai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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