数组:同一种数据的集合
数组的初始化方式:
静态初始化:
格式1:数据类型 [] 数组名称 = new 数据类型[]{值1,值2,值3……};
格式2:数据类型 [] 数组名称 = {值1,值2,值3……};
public static void main(String[] args) {
int []arr = new int[]{1,2,3,4,5};
}
}
public class Show {
public static void main(String[] args) {
int []arr = {1,2,3,4,5};
}
}
建议使用格式1。
动态初始化:
格式:数据类型 [] 数组名称 = new 数据类型[元素个数];
public class Show {
public static void main(String[] args) {
int []arr = new int[3];
}
}
两者的相同点:
1、初始化时就确定了数组长度
2、都在堆空间开辟了空间
两者的不同点:
1、静态初始化在一开始由值的个数确定数组长度。
2、动态初始化在一开始就确定了数组长度。
3、在遍历时静态初始化是得出已知的给它赋值的值,而动态初始化如果后续没有赋值,那么得到的是(数组[]中对应数字的乘积)个0。
数组分为一维数组(如上方的代码),二维数组,即在一维数组的[]后面再加一个[],也可以根据[]的个数来表明其为几维数组。
数组的赋值:
public class Show {
public static void main(String[] args) {
int[][] arr = new int[2][3];
arr[0][0] = 2;
arr[1][2] = 1;
for (int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length;j++){
System.out.println(arr[i][j]);
}
}
}
}
数组的赋值要从下标0开始,若没有赋值,则根据数据类型有默认初始化值。
这里int的默认初始化值是0。
赋值的每个[]中的值只能比初始化时[]的值小,不然会报错,提示out of bounds
数组的遍历:
方式一:
一维数组的遍历:
public class Show {
public static void main(String[] args) {
int []arr = new int[]{1,2,35,5};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
二维数组的遍历:
public class Show {
public static void main(String[] args) {
int [][]arr = new int[][]{{1, 2, 35, 5},{34,4}};
for (int i = 0; i < arr.length; i++) {
for (int j = 0;j < arr[i].length;j++){
System.out.println(arr[i][j]);
}
}
}
}
类比一维和二维数组的遍历就可得出多维数组的遍历。
方式二: for-each
结构:for(数据类型 变量名: 数组名){ 循环体; }
一维数组的遍历:
public class Show {
public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4};
for(int o:arr){
System.out.println(o);
}
}
}
二维数组的遍历:
public class Show {
public static void main(String[] args) {
int[][] arr = new int[][]{{1, 2, 3, 4},{2,4}};
for(int[] arr1:arr){
for(int arr2:arr1)
System.out.println(arr2);
}
}
}
注意:
1、数组的数据类型前后要一致,如果是静态初始化,值也要与数据类型一致。
2、arr[i] ,i 是下标,从0开始。arr.length == i。也就是说下标的最大值为arr.length - 1。
3、使用foreach时数据类型与变量名的中间是用空格隔开。
如有错误,欢迎联系作者。