java - 数组
数组说明
数组是相同类型的变量按顺序组成的一种复合数据类型,称这些相同类型的变量为数组的元素或单元。通过数组名加索引来使用数组的元素。
数组属于引用类型变量,本质是对象。参考 文档
数组的声明
声明数组:数组的类型+数组变量的名称(简称数组名)
声明一维数组
-
数组的元素类型 数组名[];
float numbers[]; -
数组的元素类型[] 数组名
推荐float[] numbers;
声明多维数组
-
数组的元素类型 数组名[];
float numbers[][]; -
数组的元素类型[] 数组名
推荐float[][] numbers; -
数组的元素类型[] 数组名[];
float[] numbers[];
分配变量
声明数组后,必须采用new关键字进行内存空间分配
数组名 = new 数组元素的类型[数组元素的个数]
//一维数组声明和分配
int[] numbers;
numbers = new int[10];
//二维数组声明和分配
int[][] numbers;
numbers = new int[3][10];
动态初始化 type[] arrayName = new type[number];
//动态初始化一维数组声明和分配
int[] numbers = new int[4];
//动态初始化二纬数组声明和分配
int[][] numbers = new int[2][3];
静态初始化 type[] arrayName = {value, value...}
//静态初始化一维数组声明和分配
String[] names = {"smile","dylan"};
//静态初始化二维数组声明和分配
String[][] names = {{"smile"},{"smile"}};
栈空间数组变量存储的地址指向堆空间数组中第一个元素的地址
一维数组内存分析图:

二维数组内存分析图

数组的初始化
创建数组后,系统会给数组中每一个元素一个默认值
int->0,short->0,byte->0,long->0,float->0.0,double->0.0,char->\u000,boolean->false,String->null
使用数组
数组通过索引访问自己的元素。数组的第一个元素是从下标0开始
//一维数组使用
int[] numbers = {1,2,3};
int myNumber = numers[0];
//二维数组使用
int[][] numbers = {{1,2,3},{4,5,6}};
int myNumber = numbers[0][0];
数组中的元素的个数称为数组的长度。通过属性值length获取到数组的长度
//一维数组使用
int[] numbers = {1,2,3};
System.out.println(numbers.length);
//一维数组使用
int[][] numbers = {{1,2,3},{1,2,3}};
System.out.println(numbers.length);
分别输出结果为:3 2
数组的引用
数组属于引用类型变量,因此两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素
int[] numbers1 = {1,2,3};
int[] numbers2 = numbers1;
numbers2[0] = 0;
System.out.println(numbers1[0]);
采用静态声明的方式,声明一个int[]变量numbers1,将number1的值,赋值给numbers2,修改numbers2的值,我们发现numbers1的值也发生了变化。
将数组赋值给另外一个变量的时候,必须保证两个变量的数据类型保持一致

数组的遍历
-
普通for循环
for(int i =0; i < array.lenth;i++) { //采用下标进行数组的访问 System.out.println(array[i]); } -
特殊for循环
for(int value : array) { System.out.println(value); } //value 的类型,必须和数组中声明的类型保持一致
当数组的下标超出数组的最大下标(array.length-1),会抛出常
java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 3
多维数组(二维数组)
二维数组实际上是由多个一维数组组成,它的各个一维数组的长度可以相同,也可以不同。
int[][] numbers = new int[2][];
for(int i = 0; i< numbers.length; i++) {
numbers[i] = new int[i+1];
}
//输出的结果为 1 2
for(int[] array : numbers) {
System.out.println(array.length);
}
杨辉三角使用
public int[][] Yanghui(int number) {
int[][] numbers = new int[number][];
for (int i = 0; i < numbers.length; i++) {
numbers[i] = new int[i+1];
for (int j = 0; j < i+1; j++) {
if (j == 0 || j == i) {
numbers[i][j] = 1;
} else {
numbers[i][j] = numbers[i-1][j-1] + numbers[i-1][j];
}
}
}
return numbers;
}
数组常用的方法
-
复制数组(Arrays.copyOf)
int[] numbers1 = {1,2,3}; int[] numbers2 = Arrays.copyOf(numbers1,numbers1.length);
知识总结


浙公网安备 33010602011771号