数组就是用来存储一批同种类型数据的内存区域(可以理解成容器)。
数组适合做统一批量数据类型数据的存储。
数组需要学会的内容
怎样定义数组存储数据
怎样操作数组元素
怎么解决实际问题
数组内存原理
数组的定义
静态初始化数组:定义数组的时候直接给出数组赋值。
静态初始化数组的格式
/*
完整格式
数据类型[] 数组名=new 数据类型[]{元素1,元素2,元素3....};
*/
double[] scores=new double[]{89,99,5,95,88,8};
int[] ages=new int[]{12,24,36};
/*
简化格式
数据类型[] 数组名={元素1,元素2,元素3....}
*/
int[] ages1={12,24,36};
数组变量名中存储的是数组在内存中的地址,数组是引用类型
int[] ages={12,24,36};
System.out.println(ages);
结果
[I@3ac3fd8b
Process finished with exit code 0
数组的访问
数组名称[索引]
int[] ages={12,24,36};
System.out.println(ages[0]);
System.out.println(ages[2]);
结果
12
36
Process finished with exit code 0
可以通过数组的访问来赋值数组
访问数组的长度
int[] i={1,2,3,4,5};
//访问数组的长度
System.out.println(i.length);
结果
5
Process finished with exit code 0
数组的最大索引=数组名.length-1,前提:元素个数大于0
数组的几个注意事项
数据类型[] 数组名也可以写成数据类型 数组名[]
什么类型的数组存放什么类型的数据,否则报错
数组一旦定义出来,程序执行过程中,长度、类型就固定了
动态初始化数组
在定义数组的时候只确定元素的类型和数组的长度,之后再存入具体数据
int[] arr=new int[3];
arr[0]=10;
System.out.println(arr[0]);
10
Process finished with exit code 0
动态数组如果没有赋值,会保持默认值
当前已经知道存入的元素值,用静态初始化
当前还不清楚要存入哪些数据用动态初始化
两种格式的写法是独立的,不可以一起用
基本类型
整型数组默认值为:0
浮点型数组默认值:0.0
布尔型数组默认值:false
引用型数组默认值:null
字符型数组的默认值是:0
数组遍历:对数组中的元素一个一个元素的访问
遍历在搜索、数据统计等等都需要
Java内存分配
方法区:字节码文件加载时进入内存
栈内存:方法运行时所进入的内存,变量也是在这里
堆内存:new出来的东西会在这块内存中开辟空间并产生地址,new出来的叫对象