java数组小结
---恢复内容开始---
1、概述
由于java是典型的静态语言,因而java中的数组也是静态的;java数组变量是引用类型的变量,(ps:java中的引用有些许像c++和c中的指针)当我们使用java数组的时候,主要有2部分操作;分别是定义引用变量(相当于c++/c中的定义一个指针(指NULL))和实例化数组对象。
在java内存分配机制中,定义局部变量和引用变量是在相应的方法栈内存中申请一块空间;而引用变量所指向的对象(类对象、数组对象)是在堆内存中申请了内存;栈内存容易访问(直接访问),堆内存不易访问(需要借助引用变量来访问堆内存)。
2、数组初始化
java数组的初始化分为2种;分别是静态初始化和动态初始化。
静态初始化:
在定义数组的时候同时对数组对象进行初始化操作;但是不可以对数组长度进行赋值。
例:int []a=new int[]{1,2,3,4};
String []b=new String[]{"Kylin","shanshan"};
动态初始化:
定义数组的时候只对数组长度进行了赋值,并没有对具体的数组对象进行初始化(由系统默认初始化)
例如:int []c=new int[4];
String []d=new String[3];
对于c数组的实例化对象的值,分别是c[0]==0 c[1]==0 c[2]==0 c[3]==0
d数组对象的值分别是 null null null;
为什么会这样呢? 这是由于java有一套默认的初始化机制,下面介绍一下java为数组元素分配的初始值:
整型类型(byte,short,int,double)默认初始值是0
浮点类型(double,float)默认初始值0.0
布尔类型(boolean)默认初始值false
引用类型(数组、类、接口、String)默认初始值为null
字符类型(char)默认初始值'\u0000'
3、二维数组(多维)
初始化多为数组的时候可以先只初始化最左边维度,java允许讲多维数组当成是一维数组来处理,废话不多说,上例子。
int [][]a=new int[3][]; //java中二维数组的数组名代表一维数组的首地址(和c++/c一样) System.out.println(a.length); for(int i=0;i<a.length;i++) { //让一维数组的元素再指向新的一维数组;就形成了二维(多维)数组;这里可以指向很多长度不同的新数组 a[i]=new int[4]; } for(int i=0;i<4;i++) { System.out.print(a[0][i]+" "); }
运行结果如下:
---恢复内容结束---