Rumah > Java > javaTutorial > teks badan

Mengapa Java Menimbulkan Ralat untuk Pembolehubah Tempatan Tidak Dimulakan tetapi Bukan untuk Pembolehubah Contoh Tidak Dimulakan?

Susan Sarandon
Lepaskan: 2024-10-24 18:47:02
asal
286 orang telah melayarinya

Why Does Java Raise an Error for Uninitialized Local Variables but Not for Uninitialized Instance Variables?

Pembolehubah dan Ahli Tidak Dimulakan di Java

Pertimbangkan coretan 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 initialized"
    }
}
Salin selepas log masuk

Walaupun kedua-dua "b" dan "c" tidak dimulakan, pengkompil menimbulkan ralat masa kompilasi untuk "c" tetapi bukan untuk "b." Perbezaan ini berpunca daripada peraturan bahasa untuk memulakan pembolehubah tika dan pembolehubah setempat.

Pembolehubah tika jenis objek (seperti "a" dan "b") secara lalai untuk dimulakan kepada nol apabila ia tidak dimulakan secara eksplisit. Inilah sebabnya mengapa mengakses "b.notify()" tidak mengakibatkan ralat serta-merta, kerana ia berkesan bersamaan dengan "null.notify()." Walau bagaimanapun, akses ini akhirnya akan mencetuskan NullPointerException apabila kod tersebut dilaksanakan.

Sebaliknya, pembolehubah tempatan jenis objek tidak dimulakan secara lalai. Percubaan untuk mengakses pembolehubah tempatan yang tidak dimulakan, seperti "c," secara langsung mengakibatkan ralat masa kompilasi. Keperluan ketat ini memastikan pembolehubah setempat sentiasa dimulakan dengan betul sebelum digunakan.

Atas ialah kandungan terperinci Mengapa Java Menimbulkan Ralat untuk Pembolehubah Tempatan Tidak Dimulakan tetapi Bukan untuk Pembolehubah Contoh Tidak Dimulakan?. 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!