Rumah  >  Artikel  >  Java  >  Mengapa Pembolehubah dan Ahli Tidak Dimulakan Menunjukkan Gelagat Berbeza di Jawa?

Mengapa Pembolehubah dan Ahli Tidak Dimulakan Menunjukkan Gelagat Berbeza di Jawa?

Linda Hamilton
Linda Hamiltonasal
2024-10-25 03:06:30768semak imbas

Why Do Uninitialized Variables and Members Exhibit Different Behaviors in Java?

Pembolehubah Tidak Dimulakan dan Ahli di Java

Di Java, pembolehubah yang diisytiharkan tanpa nilai awal boleh menimbulkan kebimbangan tentang potensi tingkah laku mereka semasa runtime . Pertimbangkan contoh berikut:

public class TestClass {

    private String a;
    private String b;

    public TestClass() {
        a = "initialized";
    }

    public void doSomething() {
        String c;

        a.notify(); // This is fine
        b.notify(); // This is fine - but will end in an exception
        c.notify(); // "Local variable c may not have been initialised"
    }

}

Dalam senario ini, kelas mengandungi dua pembolehubah tika (a dan b) dan pembolehubah tempatan (c) dalam kaedah doSomething. Semasa mengakses pembolehubah contoh yang dimulakan a berfungsi seperti yang dijangkakan, menggunakan pembolehubah contoh yang tidak dimulakan b atau pembolehubah tempatan c menghasilkan pengecualian masa jalan untuk b dan ralat masa kompilasi untuk c.

Mengapa Perbezaan ?

Spesifikasi Bahasa Java menentukan bahawa pembolehubah contoh jenis objek lalai kepada null apabila dibiarkan tanpa dimulakan, manakala pembolehubah tempatan jenis objek tidak dimulakan secara lalai. Ini bermakna bahawa mengakses rujukan objek nol (seperti dalam kes b) akan menghasilkan NullPointerException.

Untuk pembolehubah tempatan, pengkompil memerlukannya untuk dimulakan secara eksplisit sebelum digunakan untuk mengelakkan potensi tingkah laku yang tidak ditentukan. Semakan ini dilakukan semasa penyusunan, yang membawa kepada ralat masa kompilasi jika pembolehubah setempat yang tidak dimulakan diakses.

Atas ialah kandungan terperinci Mengapa Pembolehubah dan Ahli Tidak Dimulakan Menunjukkan Gelagat Berbeza di Jawa?. 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