Rumah > Java > javaTutorial > teks badan

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

Linda Hamilton
Lepaskan: 2024-10-25 03:06:30
asal
776 orang telah melayarinya

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

}
Salin selepas log masuk

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!

sumber: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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!