java基础之(引用数据类型)数组

java基础之(引用数据类型)数组

以一维数组为例,数组的声明写成 数据类型[] 数组名。 通过这条语句仅仅声明了一个数组变量,并没有创建一个真正的数组,也无法确定数组的长度,这时候数组还不能被访问。
在声明了数组之后,就要具体规定数组的大小,给数组分配内存空间,可以通过new操作符来显示创建一个数组,在定义并用运算符new为数组分配空间后,才可以引用数组中的每个元素。
当然数组的声明和数组的大小分配可以放到一起完成,即 type(数组元素类型) [] arr_name = new type[length];接下来就是对数组进行初始化,在java中,数组的初始化有两种,静态初始化和动态初始化。
(而在java中,为了保证安全性,防止内存缺失,为已创建的数组提供了默认化初始机制,在创建成功一个数组后,将完成三个动作:
1.创建一个数组对象
2.在内存中给数组分配存储空间
3.给数组的元素初始化一个相应的数据类型的默认值。)
所谓静态初始化就是在定义数组的时候就对数组进行初始化,例:int k[]={1,3,5,7,9};
动态初始化就是将数组的定义和空间分配与给数组元素赋值分开,例:char ch=new char[3];ch[0]=a;ch[1]=b;ch[2]=c;。
如何处理批量数据的问题?(为什么要用数组)
10数据>10个变量 调用不方便
== 数组可以理解为是一些地址连续的变量==
An=A1+(n-1)d
An=A1+index
d
好处:操作变量时方便
弊端:会连续占用一片内存
数据:是空间大小一样地址连续的一组存储空间
该数组内的空间数据类型都是一样的
为了方便调用数组中的元素,提供角标 索引

数组一旦创建出来,其长度不可更改

数组中的元素有默认初始化

1 int (默认0) 2 double (默认0.0) 3 String (默认null) 4 boolean (默认false) 5 6

因为数组不是基本数据类型了
数组本身就是一个对象!
基本数据类型在常量池中
引用数据类型在堆内存中
在堆内存中创建的数据 都会有默认初始化

创建数据的方式

11.数据类型[] 数组名=new 数据类型[长度]; 2 int[] arr=new int[10]; 3 创建一个长度为10的int型一维数组,元素默认为0 42.数据类型[] 数组名=new 数据类型[]{元素1,元素2,元素3,...}; 5 int[] arr=new int[]{1,2,3,4,5}; 6 创建一个指定元素为{1,2,3,4,5}的长度为5的int型的一维数组 73.数据类型[] 数组名={元素1,元素2,元素3,...}; 8 同2一样 9当一个对象再也没有被其他变量引用的时候,就变成了垃圾(由垃圾回收器自动回收)free() 10 11

二维数组

#二维数组

1int[] a=new int[len]; 2int[][] a=new int[row][col]; 3 4int[] a=new int[]{1,2,3,4}; 5int[][] a=new int[][]{ 6 {1,2,3}, 7 {4,5,6}, 8 {7,8,9} 9}; 10/* 11二维数组本质上还是一个一维数组 12只不过其数组元素是另一个一维数组 13二维数组有特殊存在(本身不是行列式) 14*/ 15int[][] a=new int[][]{ 16 {6}, 17 {1,2,3}, 18 {4,5} 19};//锯齿矩阵 20a.length 21a[0] 22a[1] 23a[2] 24//遍历方式 25for(int i=0;i<a.length;i++){ 26 for(int j=0;j<a[i].length;j++){ 27 System.out.print(a[i][j]); 28 } 29 System.out.println(); 30} 31//二维数组相当于n个一维数组 32 33

代码交流 2021