数组:相同类型的、用一个标识符名封装到一起是一个对象序列或基本类型数据序列。
一维数组的声明:1 int[ ] a1; 2 int a1[ ]
两种格式含义一样,第二种符合c和c++程序员的习惯。第一种或许更合理,表明类型是“一个int型数组”。
编译器不允许指定数组的大小。声明数组的时候不能指定其长度(元素的个数)如int a[5]; //非法。初始化的时候可以指定大小。
Java中的数组必先初始化才可以使用,所谓初始化就是为数组的数组元素分配内存,并为每个数组元素赋值;现在只是对数组的一个引用(已经为该引用分配了存储空间),并没有给数组对象本身分配任何空间,初始化才会创建相应的存储空间。
初始化的两种方式:
静态初始化:初始化时由我们自己指定每个数组元素的初始值,由系统决定需要的数组长度;
格式:数组名 = new 数组类型[]{元素1,元素2,元素3...元素n}; a1 = new int{1,2,3,4,5};
简化语法:数组名 = {元素1,元素2,元素3...元素n}; a1 = {1,2,3,4,5};
动态初始化:初始化时由我们指定数组的长度,由系统为数组元素分配初始值;
格式:数组名 = new 数组类型[数组长度]; a1 = new int[ 8];
注意:不能静态和动态初始化同时使用,也就是说不能同时指定数组的长度和元素;数组的长度一旦确定,就不能改变,也就数组是定长的;
所有数组都有一个固有成员,length,通过 数组名.length 可获得数组成员个数。java数组下标是从0开始的,最大下标为数组名.length-1。超出这个边界会出现异常数组脚标越界异常(ArrayIndexOutOfBoundsException)。
内存分析:
示例:
public class ArrayInit{
public static void main(String[] args){
int[] a1 ={1,2,3,4,5};
int[] a2;
a2 =a1;
for(int i =0;i<a2.length;i++)
a2[i]=a2[i]+1;
for(int i =0;i<a1.length;i++)
System.out.println("a1["+ i +"] =" + a1[i]);
}
}
输出:
a1[0]=2
a1[1]=3
a1[2]=4
a1[3]=5
a1[4]=6