Apa nilai default boolean
(primitif) dan Boolean
(bungkus primitif) di Jawa?
java
boolean
default-value
Makky
sumber
sumber
Nilai default apa pun
Object
, sepertiBoolean
, adalahnull
.Nilai default untuk a
boolean
adalah false.Catatan: Setiap primitif memiliki kelas pembungkus. Setiap bungkus menggunakan referensi yang memiliki standar
null
. Primitif memiliki nilai default yang berbeda:Catatan (2):
void
memiliki pembungkusVoid
yang juga memiliki defaultnull
dan hanya nilai yang mungkin (tanpa menggunakan peretasan).sumber
Boolean
adalahObject
, itu akan membuat makna baris pertama menjadi jelas. Ini kedengarannya sangat mendasar, tetapi bagi seseorang yang mengajukan pertanyaan mendasar seperti ini, ini mungkin membantu.boolean
Bisa
true
ataufalse
.Nilai default adalah
false
.(Sumber: Java Primitive Variables )
Boolean
Dapat berupa
Boolean
objek yang mewakilitrue
ataufalse
, atau bisa juganull
.Nilai default adalah
null
.sumber
Jika Anda perlu bertanya, maka Anda perlu menginisialisasi bidang / variabel Anda secara eksplisit, karena jika Anda harus mencarinya, maka kemungkinan orang lain juga perlu melakukannya.
Nilai untuk primitif
boolean
salah seperti yang dapat dilihat di sini .Seperti yang disebutkan oleh orang lain, nilai untuk
Boolean
akan menjadi nol secara default.sumber
Boolean adalah Obyek. Jadi jika itu adalah variabel instan maka akan menjadi nol. Jika dideklarasikan dalam metode, Anda harus menginisialisasi, atau akan ada kesalahan kompiler.
Jika Anda mendeklarasikan sebagai boolean yaitu primitif. Nilai akan salah secara default jika itu adalah variabel instan (atau variabel kelas). Jika dideklarasikan dalam metode, Anda masih harus menginisialisasi ke true atau false, atau akan ada kesalahan kompiler.
sumber
Anggota yang tidak diinisialisasi
Boolean
(sebenarnya referensi ke objek jenisBoolean
) akan memiliki nilai defaultnull
.Anggota yang tidak diinisialisasi
boolean
(primitif) akan memiliki nilai default sebesarfalse
.sumber
Tidak ada standar untuk
Boolean
.Boolean
harus dibangun dengan aboolean
atau aString
. Jika objek tidak diintegrasikan, itu akan menunjuk kenull
.Nilai default primitif
boolean
adalahfalse
.http://download.oracle.com/javase/6/docs/api/java/lang/Boolean.html
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
sumber
null
.null
adalah default, jadi saya tidak yakin apa yang Anda maksud ketika Anda mengatakan tidak ada. (Apakah Anda mungkin bermaksud sesuatu seperti "Boolean
tidaktrue
atau tidakfalse
secara default"?)keluaran:
Ini tampak jelas tetapi saya memiliki situasi di mana Jackson, sementara membuat serial objek ke JSON, melempar NPE setelah memanggil pengambil, seperti yang ini, yang mengembalikan boolean primitif yang tidak ditugaskan. Ini membuat saya percaya bahwa Jackson menerima nol dan mencoba memanggil metode untuk itu, maka NPE. Saya salah.
Moral dari cerita ini adalah bahwa ketika Jawa mengalokasikan memori untuk primitif, memori itu memiliki nilai bahkan jika tidak diinisialisasi, yang Jawa nyatakan sebagai false untuk boolean. Sebaliknya, ketika mengalokasikan memori untuk objek kompleks tak diinisialisasi seperti Boolean, itu hanya mengalokasikan ruang untuk referensi ke objek itu, bukan objek itu sendiri - tidak ada objek dalam memori untuk merujuk - jadi menyelesaikan referensi yang menghasilkan nol.
Saya pikir secara tegas, "default ke false" sedikit melenceng. Saya pikir Java tidak mengalokasikan memori dan memberinya nilai false sampai secara eksplisit ditetapkan; Saya pikir Java mengalokasikan memori dan nilai apa pun yang memori miliki adalah sama dengan nilai 'salah'. Tetapi untuk tujuan praktis mereka adalah hal yang sama.
sumber