int [] x,y[]; 数组的声明:x是一维数组,y是二维数组;
【一维数组】
(1) 数组是引用数据类型;
(2) 具有长度属性length
(3) 数组只能存储同一类型的数据
(4) 数组会给每个数组中的值分配一个索引值,从0开始,最大为长度length-1;
(5) 数组一旦初始化,长度确定且不能更改
(6) 一维数组不同基本类型的元素默认值不同:byte 型数组元素默认初始值是 0 。
byte、short、int、long、 型数组元素的默认初始值是 0 。
double、float 型数组元素的默认初始值是0.0。
char 型数组元素的默认初始值是 ’ '\u.000。
boolean 型数组元素的默认初始值是 false。
引用类型 (类、接口、数组、二维数组元素)的默认初始值是 null
动态初始化:
int [] score=new int[5];//定义长度初始化
int [] socre;
score=new int {12,13,14,15}//定义内容初始化
int [] socre;
score={12,13,14,15};//报错,因为没有new,没有在堆中创建数据
数组操作的两个小问题
(1) 索引越界:索引数越界;
(2) 空指针异常:数组没有初始化;
String[] name=new String[] {"lisir","zhangsan"};
System.out.println(name[0]);
name=null;
System.out.println(name[0]); //java.lang.NullPointerException
【陷阱】数组复制
int [] num=new int[] {51,43,27,99,-4};
int [] newNum=score;—————————两个地址指向堆中同一个数组数据
newNum[0]=100;
【二维数组】
初始化:
类型[][] 数组名=new 类型[10][20];
类型[][] 数组名=new 类型[5][];
int[][] num = new int[10][20];
System.out.println(num[0]);//一维数组在堆中的地址
int[] [] num1=new int[5] []; //数组中每个元素的长度不确定
System.out.println(num[0]);// 输出null。二维数组的元素是一维数组,即引用类型,默认null
int [][]y;
y=new int [5][];
y[0][0]=10; //空指针
Sysotem.out.println(y[0][0]);