C/C++与java虽然有很多相似的地方,但是也有一些差异,数组就是一个很明显的例子;今天我们就来谈谈java中的数组相关的知识:
先介绍一维数组
1:数组定义
在java中数组定义的方法有两种,我们先以一维数组为例:
int a[]; 或者 int[] a;
【注意】其中类型和数组名自己确定,但是要注意这里和C/C++中的区别,在C/C++中数组定义的时候可以指定大小,
但是在java中数组定义的时候不能指定大小,此时a仅仅是一个引用,代表一个数组名,但是并没有对应的内
存空间;
2:产生数组空间
产生数组空间的方法有两种:在定义时直接赋值或者通过new运算符分配空间
在定义时直接赋值:
int a[]={1,2,3};
通过new运算符分配空间:
int[] a=new int[10];
3:数组初始化
组初始化也有两种方式:动态初始化和静态初始化
静态初始化:又程序员显示的指定每个数组元素的初值,数组的大小又系统决定,使用静态初始化只指定数组元素初值
而不指定数组长度,如下 :
int a[]=new int []{10,20,30,40};
或者:
int a[]={10,20,30,40};
动态初始化:程序员只指定数组长度,数组初值又系统指定:
int[] a=new int[5];
【注意】那么我们来讨论一下系统会给数组指定哪些初值呢?来看一个程序:
public static void main(String[] args) {
int[] a=new int[5];
for(int i:a)
System.out.print(i+" ");
}
结果:
0 0 0 0 0
从这个例子可以看出,对于int类型,系统会自动指定为0,具体来说,系统按照如下规则指定初值:
(1)整数类型(byte,short,int,long)数组元素的值为0;
(2)浮点类型(float,double)数组元素的值为0.0;
(3)字符类型char的数组元素值为'\u0000';
(4)布尔类型boolean数组元素的值是false;
(5)类、接口和数组属对象类型,其数组元素的值为null。
对于二维数组,java和C/C++也有区别,在java中,二位数组不一定是矩形的,形式更加灵活,二位数组的每一个元素都是一维数组,
每个以为数组可以指定自己的元素个数而不受其他数组影响;如下图:
int a[][]=new int[2][];