2016-04-21 4 views
-4

Мне было интересно, почему этот код не печатает нуль и печатает 0 вместо этого. Может ли кто-нибудь объяснить, когда назначены нулевые значения по умолчанию и когда null присваивается поле данных?Java help, Null Values ​​

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» и переменная-член класса, он был бы инициализирован нулем. –

+0

О, так примитивные типы данных получают привязанные к нулевым типам данных по умолчанию, но null присваивается объектам –

+0

Невозможно, чтобы примитивный тип был пустым, только ссылки на объекты могут быть пустыми. –

ответ

0

примитивов против литературы

примитивные типы основные типы данных байт, короткие, Int, длинные, с плавающей точкой, двойной, логический, символьные примитивные переменные хранят примитивные значения

ссылочные типы - любые экземплярные классы, а также массивы Строка, сканер, случайный, штамп, int [], String [] и т. д. Справочные переменные хранят адреса

Только ссылочные типы инициализируются с помощью NULL.

Ссылка: http://pages.cs.wisc.edu/~bahls/cs302/PrimitiveVsReference.html

0

Вы должны знать различие между примитивными типами и ссылочных типами.

Одно из отличий между ними состоит в том, что переменные примитивного типа не могут быть установлены в нуль, если объекты ссылочного типа могут быть установлены. Другими словами, примитивные типы должны иметь значение.

И double - примитивный тип! Поэтому он никогда не будет нулевым.

"Но I действительно хочу, чтобы это было нулевым!" вы закричали. Обходным путем для этого является использование Double вместо double. Зачем? Если вы еще не догадались, Double действительно ссылочный тип!