2016-04-21 37 views
-4

我想知道爲什麼這個代碼不打印空和打印0代替。任何人都可以解釋何時分配空默認值以及何時將null分配給數據字段?Java的幫助,空值

public class Circle { 
    private double radius; 

    public Circle(double radius) { 
    radius = radius; 
} 

    public static void main(String[] args){ 
     Circle circle = new Circle(4); 
     System.out.println("radius: "+ circle.radius); 
    } 
} 
+1

它是一個'double'原始類型,它是一個類成員變量,所以它被初始化爲零。如果它是一個Double對象和一個類成員變量,它將被初始化爲null。 –

+0

哦原始數據類型被分配給空默認數據類型,但空分配給對象 –

+0

原始類型不可能爲空,只有對象引用可以爲空。 –

回答

0

基元與參考

原始類型是基本類型的數據的字節 ,短型,整型,長整型,浮點,雙,布爾值,炭 原始變量存儲的原始值

參考類型是任何可實例化的類以及數組 String,Scanner,Random,Die,int [],String []等 參考變量存儲地址

只有引用類型是用NULL初始化的。

參考:http://pages.cs.wisc.edu/~bahls/cs302/PrimitiveVsReference.html

0

你需要知道原始類型引用類型之間的差異。

它們之間的差異之一是基元類型變量不能設置爲null,而引用類型對象可以。換句話說,原始類型必須有一個值。

double是一種原始類型!所以這就是爲什麼它永遠不會爲空。

「但我真的希望它爲空,但!」你喊道。解決方法是使用Double而不是double。爲什麼?如果你還沒有猜到,Double實際上是一個參考類型!