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 Objectgibi Boolean, olduğu null.
A için varsayılan değer booleanfalse 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) voidbir sarmalayıcıya Voidsahiptir null.
Booleanedilir 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 trueveya false.
Varsayılan değer şudur false.
(Kaynak: Java İlkel Değişkenleri )
Boole
bir olabilir Booleannesne temsil trueveya 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 Booleanvarsayı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. Booleana booleanveya a ile oluşturulmalıdır String. Nesne tarafsız değilse, işaret eder null.
İlkel booleaniç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. nullvarsayılan, bu yüzden biri olmadığını söylediğinde ne bahsettiğinizden emin değilim. (Belki de "varsayılan Booleanolarak ne truede falsevarsayı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.