目录
数组
数组是一个存放多个数据的容器。
- 数据是同一种类型
- 所有的数据是线性规则排列
- 可通过位置索引来快速定位访问数据
- 需明确容器的长度
Java数组的定义和初始化
int a[];
int[] b; //推荐用这种方式来定义数组
上面代码中的a和b数组只定义了,但是没有new操作,实际上是null。
int[] c = new int[2]; //c有2个元素,都是0 (见附录,代码示例1)
c[0] = 10; c[1] = 20;
我们也可以在定义的同时对数组进行初始化。
int d[] = new int[]{0,2,4};
int d1[] = {1,3,5}; //这是一种简写
Java 数组索引
- 数组的length属性标识了数组的长度
public class Demo1 {
public static void main(String[] args) {
int[] a = new int[] {3,4,5,6,7};
System.out.println(a.length);
}
}
如上,这里的数组里元素有5个。
- 数组的索引是从0开始的,最大的索引是 length-1 (Java中好像是不能像Python那样有-1的索引的,这点需要注意)
public class Demo1 {
public static void main(String[] args) {
int[] a = new int[] {3,4,5,6,7};
System.out.println(a[0]); //输出结果为3
System.out.println(a[4]); //输出结果为7
}
}
- 如果索引超出范围,会报ArrayIndexOutOfBoundsException异常。
Java数组遍历
public class Demo1 {
public static void main(String[] args) {
int[] a = new int[] {3,4,5,6,7};
//需要自己控制索引位置
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
public class Demo1 {
public static void main(String[] args) {
int[] a = new int[] {3,4,5,6,7};
//无需控制索引位置
for (int e : a) {
System.out.println(e);
}
}
}
上面两种遍历出来结果都是一样的。但第二种方法更好,不会存在越界的问题。
Java中的多维数组
//规则的多维数组
int a[][] = new int[2][3]; //2行3列
上面代码可以用一张图来形象表示:
//不规则的多维数组
int b[][];
b = new int[3][]; //定义这个数组有3行
b[0] = new int [3]; //接着对数组定义这行有多少列
b[1] = new int [4];
b[2] = new int [5];
Java多维数组的访问
用for语句的第一种方法:
public class Demo1 {
public static void main(String[] args) {
//不规则的多维数组
int b[][];
b = new int[3][]; //定义这个数组有3行
b[0] = new int [] {1,2,3}; //接着对数组定义这行有多少列
b[1] = new int [] {4,5,6,7};
b[2] = new int [] {8,9,10,11,12};
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < b[i].length; j++) {
System.out.print(b[i][j]+",");
}
System.out.println();
}
}
}
输出结果:
1,2,3,
4,5,6,7,
8,9,10,11,12,
下面我们是访问多维数组的另一种方法,这类型的for语句也被称为 for-each语句。(注意本例子中,println与print的区别)
public class Demo2 {
public static void main(String[] args) {
//不规则的多维数组
int b[][];
b = new int[3][]; //定义这个数组有3行
b[0] = new int [] {1,2,3};
b[1] = new int [] {4,5,6,7};
b[2] = new int [] {8,9,10,11,12};
for (int[] items : b) {
for (int item : items) {
System.out.print(item+",");
}
System.out.println();
}
}
}
输出结果:
1,2,3,
4,5,6,7,
8,9,10,11,12,
附录
代码示例1
public class Demo1 {
public static void main(String[] args) {
int[] a = new int[5];
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
输出结果:
0
0
0
0
0