Java数组一定要初始化才能使用吗?

移动开发
数组是大多数编程语言提供的一种复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组。Java语言的数组变量是引用类型的变量,因此具有Java独有的特性。

数组是大多数编程语言提供的一种复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组。Java语言的数组变量是引用类型的变量,因此具有Java独有的特性。

在正常的Java开发中,使用Java数组之前,我们都会对数组进行初始化,为数组中的元素分配内存空间、赋值等,但Java数组一定要初始化吗?不初始化可以 么?

其实,java的数组变量是引用类型的变量,并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中就可使用该数组变量,比如下面这个例子:


  1. public class T {   
  2.  
  3.   /**  
  4.  
  5.    * @param args  
  6.  
  7.    */   
  8.  
  9.   public static void main(String[] args) {   
  10.  
  11.     // TODO Auto-generated method stub   
  12.  
  13.     //定义并初始化nums数组   
  14.  
  15.     int nums[] = new int[]{3,13,4,6};   
  16.  
  17.     //定义一个prices数组变量   
  18.  
  19.     int prices[];   
  20.  
  21.     //让prices数组指向nums所引用的数组   
  22.  
  23.     prices = nums;   
  24.  
  25.     for(int i=0;i<prices.length;i++){   
  26.  
  27.       System.out.println(prices[i]);   
  28.  
  29.     }   
  30.  
  31.     //将prices数组的第三个元素赋值为100   
  32.  
  33.     prices[2] = 100;   
  34.  
  35.     //访问nums数组的第三个元素 将看到数组100   
  36.  
  37.     System.out.println(nums[2]);   
  38.  
  39.   }   
  40.  

从上面代码可以看出,定义了prices数组之后,并未对prices数组进行初始化。 当执行int prices[]之后,

程序的内存分配如图

从图可以看出,此时的prices数组还未指向任何有效的内存,未指向任何数组对象,此时的程序还不可使用prices数组变量。

当程序执行prices = nums之后,prices变量将指向nums变量所引用的数组,此时prices变量和nums变量引用同一个数组对象。

执行这条语句之后,prices变量已经指向有效的内存及一个长度为4的数组对象,因此程序完全可以正常使用prices变量了。

对于数组变量来说,它并不需要进行所谓的初始化,只要让数组变量指向一个有效的数组对象,程序即可正常使用该数组变量。

所以,Java语言中的数组,不一定要初始化也可正常使用。Java初学者可以尝试用上面这里例子的方法,实际操作一下,加深印象。***,希望小编的分享对大家有帮助。

责任编辑:倪明 来源: 码农网
相关推荐

2015-09-16 13:11:23

Java数组初始化

2015-09-21 09:39:35

Java数组初始化

2019-11-04 13:50:36

Java数组编程语言

2009-06-11 13:26:16

Java数组声明创建

2021-12-03 12:35:50

new[]delete[]语言

2009-09-08 09:48:34

LINQ初始化数组

2009-08-28 11:24:48

C#一维数组初始化

2009-09-18 11:15:52

C#数组初始化

2021-03-29 22:58:34

大数据Java编程语言

2009-09-02 16:52:55

C#数组初始化

2009-11-18 17:53:18

PHP数组初始化

2011-07-07 15:13:42

PHP

2009-09-17 16:06:22

C#数组初始化

2009-09-17 16:17:41

C#参差数组初始化

2017-10-16 12:52:51

2021-01-05 05:27:32

业务Leader团队

2012-03-13 13:38:42

Java

2017-05-05 09:26:33

2022-04-24 09:54:24

ProxyReflect前端

2023-11-12 23:08:17

C++初始化
点赞
收藏

51CTO技术栈公众号