Java的数组使用前一定要初始化吗?不一定

Java 1426℃

Java SE中规定:使用Java数组之前必须先初始化数组,也就是为数组元素分配内存空间,并指定初始值。实际上,如果真正掌握了Java数组在内存中分配机制,那么完全可以换一个方式来初始化数组,或者说,数组无需经过初始化。

始终记住:Java 的数组变量是引用类型的变量,它并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中即可使用该数组变量。示例如下。

public class ArrayTest3  
{  
     public static void main(String[] args)   
     {  
          //定义并初始化nums 数组  
          int[] nums = new int[]{3, 5, 20, 12};  
          //定义一个 prices 数组变量  
          int[] prices;  
          //让 prices数组指向 nums 所引用的数组  
          prices = nums;  
          for (int i = 0 ; i < prices.length ; i++ )  
          {  
                 System.out.println(prices[i]);  
          }  
          //将 prices数组的第 3个元素赋值为34  
          prices[2] = 34;  
          //访问 nums数组的第3个元素,将看到输出34  
          System.out.println("nums数组的第 3个元素的值是:" + nums[2]);  
     } 
}

从上面代码可以看出,程序定义了 prices 数组之后,并未对 prices 数组进行初始化。当执行 int[] prices;后的该数组变量还未指向任何有效的数组对象,此时的程序还不可使用prices 数组变量。当程序执行prices = nums;之后,prices 变量将指向nums变量所引用的数组,此时prices变量和nums变量引用同一个数组对象。执行这条语句之后,prices 变量已经指向有效的内存及一个长度为4的数组对象,因此程序完全可以正常使用prices 变量了。

对于Java 程序中所有的引用变量,它们都不需要经过所谓的初始化操作,需要进行初始化操作的是该引用变量所引用的对象。比如,数组变量不需要进行初始化操作,而数组对象本身需要进行初始化;对象的引用变量也不需要进行初始化,而对象本身才需要进行初始化。

转载请注明:零五宝典 » Java的数组使用前一定要初始化吗?不一定