-
数组的概念:是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
-
数组的特点:
(1)数组是有序排列的
(2)数组属于引用数据类型的变量。数组的元素既可以是基本数据类型,也可以是引用数据类型。
(3)创建数组对象会在内存中开辟一整块连续的空间。
(4)数组的长度一旦确定,就不能修改。
-
数组的分类:
(1)按照维数:一维数组,二维数组。。。。
(2)按照数组元素的类型:基本数据类型元素的数组,引用数据类型元素的数组。
-
一维数组的基础操作:
package day20210805;
public class Array {
public static void main(String[] args) {
//1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行
int[] ids;//声明
ids = new int[]{11,22,33,44};
//1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
String[] names = new String[3];
//2.如何调用数组的指定位置的元素:通过索引下标的方式调用(从0开始到数组长度减一)
names[0] = "元";
names[1] = "圆";
names[2] = "荣";
//3.如何获取数组长度:(names.length)
//4.如何遍历数组
for(int i =0;i<names.length;i++) {
System.out.println(names[i]);
}
}
}
-
数组的默认初始化值(没有赋值时):
(1)数组元素是整型时默认初始化值为:0
(2)------------浮点型----------------:0.0
(3)------------char型----------------:0(ASCII值为0)(效果是一个空格但值就是0)或'\u0000',而非‘0’
(4)------------boolean型------------:false
(5)-------------引用数据类型---------:null
-
内存的简化结构:
-
一维数组的内存解析:(0x5566是数组的首地址值赋给数组名,数组名通过首地址值来找到数组)
-
二维数组的基本方法:
package day20210805;
//二维数组的理解:我们可以看成一个一维数组作为另一个一维数组的元素而存在,
// 其实从数组底层的运行机制来看,其实没有多为数组。
public class ArrayTest1 {
public static void main(String[] args) {
//1.二维数组的声明和初始化
//1.1静态初始化
int[][] arr1 = new int[][] {{22,11,1},{44,22,11},{11,2}};
//1.2动态初始化
String[][] arr2= new String[3][4];
String[][] arr3= new String[3][];
//补充也可以这样写
int[] arr4[] =new int[][] {{22,11,1},{44,22,11},{11,2}};
int arr5[][] ={{22,11,1},{44,22,11},{11,2}};//类型判断(声明和初始化在同一行)
//2.如何调用数组的指定位置的元素
System.out.println(arr1[1][2]);//11
System.out.println(arr2[1][1]);//null
arr3[1]= new String [] {"ww","tt","ee"};//tt
System.out.println(arr3[1][1]);
//3.获取数组的长度
System.out.println(arr4.length);//3
System.out.println(arr4[2].length);//2
//4.如何遍历二维数组
for(int i=0;i<arr4.length;i++) {
for(int j=0;j<arr4[i].length;j++) {
System.out.print(arr4[i][j]+",");//22,11,1,44,22,11,11,2,
}
}
//5.二维数组的默认值
int [][] arr6=new int[4][3];
System.out.println(arr6[0]);//[I@123a439b:--》'[' 表示一维数组,
//'I' 表示int型,@后面的16进制的数值表示地址值
System.out.println(arr6[0][0]);//0
double [][][] arr7= new double[3][4][3];
System.out.println(arr7);//[[[D@7de26db8
System.out.println(arr7[0]);//[[D@7de26db8
float[][] arr8=new float[4][];
System.out.println(arr8[1]);//null
// System.out.println(arr8[1][0]);//报错,空指针异常
}
}
-
二维数组的内存解析:
例: