1.数组数组是存储同一种数据类型多个元素的集合,也可以看成是一个容器(数组既可以存储基本数据类型也可以存储引用数据类型)
一维数组的定义格式:
格式1 数据类型 [ ] 数组名;
格式2 数据类型 数组名 [ ];
int [ ] a; 定义了一个int类型的数组
int a[ ]; 定义了一个int类型的a数组
2.数组的初始化
所谓数组的初始化就是为数组中数组元素分配内存空间,并未每个数组元素赋值。
Java中的数组必须先初始化,然后才能使用。
初始化的分类
- 动态初始化:只指定长度,由系统给出初始值。
动态初始化的格式 int[ ] arr = new int[3];定义了一个int类型的数组 arr,这个数组可以存放3个int类型的值。 - 静态初始化:给出初始化值,由系决定长度。
静态初始化的格式 int [ ] arr = {1,2,3,4,5,6};定义了一个int类型的数组 arr,这个数组存放了6个int类型的值。
java中的数组的内存图解(一个一维数组)
package org.westos.demo3;
public class array1 {
public static void main(String[] args) {
int [] arr = {23,24,34};
System.out.println(arr);
System.out.println(arr [0]);
System.out.println(arr [0]);
System.out.println(arr [0]);
}
}
运行结果为:
[I@1540e19d
23
23
23
int [ ][ ] arr = new int[3][ ];与int [ ][ ] arr = new int[3][2 ];的区别
另外例如 int [3][ ] a = {{1,2,3},{2,3,4},{2,3,4}};
int [3 ][ ] b = a;这种方法只是增加了一个a的引用,a和b指向的是同一个数组,对其中任何一个的修改必定会影响到另一个。
例如:
package org.westos.demo3;
public class array1 {
public static void main(String[] args) {
int [] a = {23,24,34};
int []b=a;
System.out.println(a);
System.out.println(b);
b[0] = 12;
b[2] = 14;
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
System.out.println(b[0]);
System.out.println(b[1]);
System.out.println(b[2]);
System.out.println(a.length);
System.out.println(b.length);
}
}
运行结果为:
[I@1540e19d
[I@1540e19d
12
24
14
12
24
14
3
3
内存图为:
二维数组
二维数组其实就是每一个元素就是一维数组的数组
二维数组的格式
数据类型 [ ][ ] 变量名 = new int [m][n];
其中m标识的是这个二维数组有多少个元素,必须协商,n可以不写。
下面的这两种方式也是可以定义二维数组的但是不建议使用
数据类型 数组名[][] = new 数据类型[m][n];
数据类型[] 数组名[] = new 数据类型[m][n];
另外需要注意的是数组的下角标是从0开始的,最后一个元素的下角标可以用 数组名.length - 1来表示。这样数组中的遍历,反向输出等等掌握原理就可以编出程序。