Yanıtlar:
Bir Boolean
(nesne) için varsayılan değer şudur null
. (İlkel)
için varsayılan değer boolean
şudur false
.
Herhangi varsayılan değeri Object
gibi Boolean
, olduğu null
.
A için varsayılan değer boolean
false değeridir .
Not: Her ilkel bir sarmalayıcı sınıfına sahiptir. Her sarmalayıcı, varsayılan değeri olan bir başvuru kullanır null
. Temel öğeler farklı varsayılan değerlere sahiptir:
boolean -> false
byte, char, short, int, long -> 0
float, double -> 0.0
Not (2): varsayılan değeri olan ve yalnızca olası değer olan (korsan kullanmadan) void
bir sarmalayıcıya Void
sahiptir null
.
Boolean
edilir Object
, yani ilk satır bariz anlamı olur. Bu oldukça basit geliyor, ancak böyle temel bir soru soran biri için yardımcı olabilir.
boolean
olabilir true
veya false
.
Varsayılan değer şudur false
.
(Kaynak: Java İlkel Değişkenleri )
Boole
bir olabilir Boolean
nesne temsil true
veya false
, ya olabilir null
.
Varsayılan değer şudur null
.
Sormanız gerekiyorsa, alanlarınızı / değişkenlerinizi açıkça başlatmanız gerekir, çünkü eğer bakmak zorundaysanız, başka birinin de bunu yapması gerekir.
Bir ilkel için değer buradaboolean
görüldüğü gibi yanlıştır .
Başkaları tarafından belirtildiği gibi, a değeri Boolean
varsayılan olarak boş olacaktır.
Boolean bir Nesnedir. Yani bir örnek değişkeni ise null olur. Bir yöntem içinde bildirilirse, onu başlatmanız gerekir veya bir derleyici hatası olacaktır.
İlkel yani boolean olarak bildirirseniz. Bir örnek değişkeni (veya sınıf değişkeni) ise değer varsayılan olarak false olur. Bir yöntem içinde bildirilirse, yine de true veya false olarak başlatmanız gerekir veya bir derleyici hatası olacaktır.
İçin varsayılan yok Boolean
. Boolean
a boolean
veya a ile oluşturulmalıdır String
. Nesne tarafsız değilse, işaret eder null
.
İlkel boolean
için varsayılan değer şudur false
.
http://download.oracle.com/javase/6/docs/api/java/lang/Boolean.html
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
null
. null
varsayılan, bu yüzden biri olmadığını söylediğinde ne bahsettiğinizden emin değilim. (Belki de "varsayılan Boolean
olarak ne true
de false
varsayılan" gibi bir şey mi demek istediniz ?)
class BooleanTester
{
boolean primitive;
Boolean object;
public static void main(String[] args) {
BooleanTester booleanTester = new BooleanTester();
System.out.println("primitive: " + booleanTester.getPrimitive());
System.out.println("object: " + booleanTester.getObject());
}
public boolean getPrimitive() {
return primitive;
}
public Boolean getObject() {
return object;
}
}
çıktı:
primitive: false
object: null
Bu açık görünüyor ama Jackson'ın bir nesneyi JSON'a serileştirirken, tıpkı bunun gibi, atanmamış ilkel bir boole döndüren bir alıcıyı çağırdıktan sonra bir NPE fırlattığı bir durum vardı. Bu beni Jackson'ın null aldığını ve üzerinde bir yöntem, dolayısıyla NPE'yi çağırmaya çalıştığına inanmamı sağladı. Ben hatalıydım.
Hikayenin ahlakı, Java'nın bir ilkel için bellek ayırması durumunda, bu belleğin başlatılmasa bile bir değere sahip olması, Java'nın bir boole için false değerine eşit olmasıdır. Buna karşılık, Boole gibi başlatılmamış bir karmaşık nesne için bellek ayırırken, nesnenin kendisi için değil, yalnızca o nesneye başvuru için alan ayırır - başvuruda bulunacak hiçbir nesne yoktur - bu nedenle bu sonuç çözümlendiğinde çözüm boş olur.
Kesinlikle konuşmak gerekirse, "varsayılanı yanlış" biraz işaret dışı olduğunu düşünüyorum. Java bellek ayırmak ve açıkça ayarlanana kadar yanlış bir değer atama düşünüyorum; Java'nın belleği ayırdığını düşünüyorum ve belleğin sahip olduğu değer 'false' değeriyle aynıdır. Ancak pratik amaçlı olarak aynı şeydir.