Ini bergantung pada tempat User user; muncul, mari letakkan kesimpulan dahulu:
Jika ia adalah atribut (medan) objek, tiada perbezaan antara kedua-dua kaedah penulisan.
Jika ia adalah pembolehubah tempatan dalam kaedah, jika tiada tempat lain dalam kaedah untuk menetapkan nilai kepada pengguna, ralat penyusunan akan berlaku.
Jika ia adalah atribut objek, pengkompil Java secara automatik akan memberikan nilai awal kepada medan semasa penyusunan (jenis asal ialah nilai lalai; jenis rujukan adalah nol). Contohnya, kod berikut:
public class TestInitialization {
private User userA;
}
Selepas penyusunan, gunakan javap untuk melihat kod bait Bahagian merah ialah proses pengkompil memberikan nilai awal secara automatik:
Jika ia pembolehubah tempatan dalam kaedah, pengkompil tidak akan memberikan nilai awal secara automatik. User user;Pengguna pembolehubah hanya ditakrifkan, tetapi tiada ruang diperuntukkan kepada pengguna dalam memori Ia tidak dimulakan dan tidak boleh disusun User user = null;Bukan sahaja pengguna pembolehubah ditakrifkan, tetapi ruang memori juga diperuntukkan untuk pengguna, pengguna kini menunjuk ke nol.
Ini bergantung pada tempat
User user;
muncul, mari letakkan kesimpulan dahulu:Jika ia adalah atribut (medan) objek, tiada perbezaan antara kedua-dua kaedah penulisan.
Jika ia adalah pembolehubah tempatan dalam kaedah, jika tiada tempat lain dalam kaedah untuk menetapkan nilai kepada pengguna, ralat penyusunan akan berlaku.
Jika ia adalah atribut objek, pengkompil Java secara automatik akan memberikan nilai awal kepada medan semasa penyusunan (jenis asal ialah nilai lalai; jenis rujukan adalah nol). Contohnya, kod berikut:
Selepas penyusunan, gunakan javap untuk melihat kod bait Bahagian merah ialah proses pengkompil memberikan nilai awal secara automatik:
Jika ia pembolehubah tempatan dalam kaedah, pengkompil tidak akan memberikan nilai awal secara automatik.
User user;
Pengguna pembolehubah hanya ditakrifkan, tetapi tiada ruang diperuntukkan kepada pengguna dalam memori Ia tidak dimulakan dan tidak boleh disusunUser user = null;
Bukan sahaja pengguna pembolehubah ditakrifkan, tetapi ruang memori juga diperuntukkan untuk pengguna, pengguna kini menunjuk ke nol.Jika pengguna ialah pembolehubah setempat: menggunakan pengguna sebelum tugasan pertama (termasuk pengamulaan kepada null) ialah ralat penyusunan
Tiada perbezaan selepas tugasan
Nampaknya sama
Tiada perbezaan, nilai permulaan lalai adalah batal
Tidak= Tiada ruang dicipta untuknya dalam timbunan. Menambah =null menentukan pemegang tempat kosong
dalam tindanan.