Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can we assume default array values in Java? for example, assume that an int array is set to all zeros?

Tags:

java

In practice can I assume that all int arrays in Java will start out filled with zeros? for all machines in which the JVM runs?

Is this true for all types? char? boolean? enums?

Where is this officially documented?

The textbooks I have say that int arrays are set to zero but they also recommend that one should write a for-loop to set all values to zero just "to be clearer".

like image 458
Jose M Vidal Avatar asked Oct 08 '10 19:10

Jose M Vidal


People also ask

Are integer arrays initialized to zero Java?

Initialize Array Elements to Zero in JavaBy default in Java, data types like int, short, byte, and long arrays are initialized with 0. So, if you create a new array of these types, you don't need to initialize them by zero because it's already their default setting.

How can the default values of an array be initialized with Java?

Using default values in initialization of array For double or float , the default value is 0.0 , and the default value is null for string. Type[] arr = new Type[capacity]; For example, the following code creates a primitive integer array of size 5 . The array will be auto-initialized with a default value of 0 .


2 Answers

Java Language Specification is the right place to look for such information:

Array components are unnamed variables that are created and initialized to default values (§4.12.5) whenever a new object that is an array is created

Default values themselves are given in section 4.12.5.

  • 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, the default value is null.
like image 191
Nikita Rybak Avatar answered Oct 13 '22 04:10

Nikita Rybak


Yes. Primitive types in Java are always zero-initialized. References are also initialized to null.

like image 34
Etienne de Martel Avatar answered Oct 13 '22 04:10

Etienne de Martel