标签:
数组是大多数编程语言都提供的一种复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组,java语言的数组变量时引用类型的变量,因此具有java引用变量的特性。在使用数组之前必须对数组对象进行初始化,当所有的数组元素都被分配了合适的内存空间,并指定了初始值是,数组初始化完成。
数组初始化分为
1、静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组的长度。
语法形式:
int[] y = {1,2,3,4,5};
2、动态初始化:初始化时程序员只指定数组的长度,由系统为程序分配初始值。
语法形式:
int[] x = new int[5];
下面看一下静态初始化数组和动态初始化数组在内存中的分布情况
1 //代码 2 public static void main(String[] args) { 3 4 //采用静态初始化方式初始化第一个数组 5 String[] jops = new String[]{"工人","农民","官员","歌手"}; 6 //采用静态初始化方式初始化第二个数组 7 String[] names = new String[]{"小张","小明","小刚"}; 8 //采用动态初始化方式初始化第一个数组 9 String[] str = new String[5]; 10 System.out.println("第一个数组的长度:"+jops.length); 11 System.out.println("第二个数组的长度:"+names.length); 12 System.out.println("第三个数组的长度:"+str.length); 13 }
三个数组的长度依次是4,3,5。
下面是内存原理图:
java数组是动态的,一旦数组初始化完成,数组元素的内存空间分配即结束,程序只能改变数组元素的值,而无法改变数组的长度。java的数组变量时一种引用类型的变量,数组变量并不是数组本身,它只是指向堆内存中的数据数组对象。通过以下代码我们可以看出数组对象在内存的中变化关系。
1 jops = names; 2 str = names; 3 System.out.println("第一个数组的长度:"+jops.length); 4 System.out.println("第三个数组的长度:"+str.length); 5 jops[1] ="小李"; 6 System.out.println("names数组的第二个元素:"+jops[1]);
堆内存的内存变化:
由此我们可以看出,java数组变量只是引用类型的变量,它并不是数组对象本身,只要让数组变量始终指向有效的数组对象,程序中即可使用该数组变量。
标签:
原文地址:http://www.cnblogs.com/gzd-123/p/5022441.html