1
double [] dou = new double [12];


Double [] dou = new Double [12];

how does dou (in both the case ) differ from each other ?

I tried to print dou[0] (without any initialization) the first case showed 0.0 while the second shows null can anyone tell me why this happens ?

thanks in advance

Sotirios Delimanolis
  • 274,122
  • 60
  • 696
  • 724
Hash
  • 229
  • 3
  • 10

3 Answers3

5

double is a primitive type, while Double is a class wrapper for double.

Since double is primitive, its default value will be 0. On the other hand, Double variables are objects, so their default value will be null. This is noted in the JLS: Initial Values of Variables (emphasis mine):

Each class variable, instance variable, or array component is initialized with a default value when it is created(§15.9, §15.10):

For type byte, the default value is zero, that is, the value of (byte)0.

For type short, the default value is zero, that is, the value of (short)0.

For type int, the default value is zero, that is, 0.

For type long, the default value is zero, that is, 0L.

For type float, the default value is positive zero, that is, 0.0f.

For type double, the default value is positive zero, that is, 0.0d.

For type char, the default value is the null character, that is, '\u0000'.

For type boolean, the default value is false.

For all reference types (§4.3), the default value is null

This also applies for other primitives and their respective class wrappers:

  • int and Integer
  • long and Long
  • float and Float
  • boolean and Boolean
Community
  • 1
  • 1
Luiggi Mendoza
  • 85,076
  • 16
  • 154
  • 332
1

double is a primitive type. When use as element in an array, the java compiler use 0.0 if no other value is given as default.

Double is a reference type. When you use it as element in arrays, the java compiler inizialite it as an object, and the default value for every object in arrays is null.

0

Double is a class and double is a primitive type

Donnie Rock
  • 552
  • 1
  • 14
  • 27