Empty arrays automatically initialize contents?

别说谁变了你拦得住时间么 提交于 2020-01-11 07:21:33

问题


How come

int alone;
System.out.println(alone);

Gives errors but

 int[] arr = new int[1];
 System.out.println(arr[0]);

Equals 0? When you initialize an empty array, does it automatically initialize its contents to 0 (or null, etc.)?


回答1:


From the language standard

Otherwise, a one-dimensional array is created of the specified length, and each component of the array is initialized to its default value (§4.12.5).

And the default values are:

  • 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.




回答2:


Yes, for primitive types(except boolean and char) it will be default to ZERO. If object type it will be default to null.

This java tutorial may help you.

NOTE: as woot4Moo answered, this is for only instance variables. If local variable, then it won't be default to any.




回答3:


Yes, for primitive type number arrays, it initializes with 0, for boolean[], it initializes with false, for char[], it initializes with NULL(ASCII value 0) and for objects [] including String[] its initializes with null.




回答4:


There are two separate by similar issues involved here. First note that all variable types have a default value, which differs depending on the type. There are at least two times where these defaults are used: 1) declaring a member variable and 2) initializing an array with the new operator.

Notice that if you simply declare a local array variable without initializing it with new, then you get the same error as when you declare a simple int variable. This is because all local variables must be initialized. They do not get an automatic default value.

On the other hand, member variables do get a default value. Similarly, when you create an array object by using the new operator, the elements of the array are initialized to the appropriate default value.




回答5:


It depends on where it was declared (inside a class vice inside a function). If it is a class member variable it will be initialized to its default. 0 for numeric types(0.0 for float types / double), null for Strings, false for boolean,and null for Objects. If it is declared inside of a function it would remain uninitialized in the case of int alone. In terms of an array it will always initialize the values contained within it.



来源:https://stackoverflow.com/questions/13167153/empty-arrays-automatically-initialize-contents

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!