初始化(包括声明):
分为静态初始化和动态初始化。申明的方式有两种,以一维数组为例:int[ ] testArr, int testArr[ ]。后者不常用,只是为了和C语言统一,Java源码中也是把[ ]放在前面。下面统一用第一种申明方式
一维数组:
//静态初始
int[] testArr = new int[]{1,2,3}; //这两个都可以,只是申明数组的时候[]的位置不一样
int testArr[] = new int[]{1,2,3}; //这样也可以,但是一般用第一种,第二种申明为了维持和C语言一样
int[] testArr = {1,2,3};
//动态初始
int[] testArr = new int[3]; //这两个都可以,只是申明数组的时候[]的位置不一样
二维数组:(可以理解为由一维数组作为元素的一维数组)
//静态初始
int[][] testArr = new int[][]{{1,2,3},{1,2},{4,5}};
int[] testArr[] = new int[][]{{1,2,3},{1,2},{4,5}};//这个声明比较特别,但是很少用
//动态初始
int[][] testArr = new int[3][];//只知道有3行
int[][] testArr = new int[3][4];//知道3行4列
数组的属性:
通过"数组名.length"调用数组的长度。在初始化完就已经确定,所以如果有个数组的长度还不确定,那代表根本无法进行初始化。
一维数组这样使用很好理解,就是这个数组有多少元素,但是二维数组这样使用,返回的是二维数组有多少行。
如果单独用testArr[0].length就会返回第0行有多少列。从这个角度也能明白,其实这里的二维数组很像是图的临界表结构,不同的行就是不同的一维数组。
遍历:
分为传统for遍历和增强for遍历。
//一维数组
//传统for
for(int i=0;i<testArr.length,i++){
System.out.println(testArr[i]);
}
//增强for,格式:for(临时值的数据类型 用来循环的临时值: 需要循环的对象)
for(int temp: testArr){
System.out.println(temp);
}
//二维数组:
//传统的for
for(int i=0;i<testArr.length;i++){
for(int j=0;j<test[i].length;j++){
System.out.println(testArr[i][j]);
}
}
//增强
for(int[] temp: testArr){ //这里的temp是一维数组
for(int data: temp){ //data是一维数组里的值
System.out.println(data);
}
}
默认初始化值:
数值型的元素都是0,char默认是0或者'\u0000',不是0;boolean默认是false;引用类型都是null。
数组的特点:
数组一但确定长度就得确定,这是数组的一个缺点。数组内的数据类型也必须确定统一,这样操作起来会很方便,这是数组的优点。数组的缺点还有:对于添加、插入、删除操作非常不友好,很麻烦;没有特定的方法获得数组中元素的个数,length这个属性不够。鉴于它的缺点我们常常会用到Java容器:集合,不用开始就确定长度。