今日预习总结
2020/8/2My harvest of the day Studay day-04 __数组
数组
JVM内存模型
1方法区 主方法存在的地方存储被JVM加载后的,类信息.常量.静态变量即时编译后的数据信息
2;java虚拟机栈 每当局部变量被创建的时候创建一个栈帧用于存储该方法的局部变量,操作栈,动态链接,方法出口等
3:java堆:当有对象创建的时候就在堆上开辟一块存储空间
GC垃圾回收器
1;要检查当前对象是否被引用 如果有过 要是无
2:无 就直接处理掉
3:在 定时/高峰时/内存吃紧的时候/内存溢出 会检查
数组定义
作用: 把相同类型的多个常量值有序的组织起来的一种数据形式 数组索引从
0开始的 元素可以更改 但是索引是不可以更改的 (我们关系的数据是元素)
语法: 数组元素类型[ ] 数组名;
数组的初始化
作用:为数组分配内存,用来存储对应的数据元素
静态初始化
int[] nums = new int[] {1,3,4,5,6};
int[] nums = {1,3,4,5,6};//简单的写法,定义合初始化必须同时写
内存分析:(1) new的时候在堆中开辟一块有引用地址的内存空间(2) nums 在
栈里面开一块内存空间(3) 把堆里面的数组通过引用地址赋值给
nums
主动断开(2): 讲nums值赋值为null此时 就和在赋值的效果是一样的 就是断了
没下家 重新赋值是断了有下家 如果没关系了就不可以访问了,
访问了就会报错的
动态初始化
int[] arr1 = new int[3];
内存分析:(1)在堆里面开辟一块空间带引用地址合索引(2)arr1在栈内开
一块内存空间(3)把堆的引用地址赋值给arr1 但是没有元素
创建数组和数组重新赋值内存分析(引用于:老钟)
动态初始化默认初始值
数组的基本操作
作用:对数组进行基本的操作 增删改查
//如果要直接打印数组用 java.util.Arrays.toString(数组变量);
获取数组的长度: 语法 int size = 数组名.length():
获取数组元素值: 语法 元素类型 变量名 = 数组名[index];
设置数组元素值: 语法 数组名[index] = 值
使用循环操作数组(遍历数组)
public class ArrayDemo{
public static void main(String[] args){
//定义一个数组来循环遍历
int[] arr = {1,2,3,4,5};
//利用for循环来操作数组
for(int i = 0; i<arr.length;i++){
//根据数组索引来遍历数组
System.out.println(arr[index]);
}
//利用foreach循环遍历
for(int ele:arr){
System.out.println(ele);
}
//选用 需要用索引选用for如果不选用就直接foreach
}
}
二维数组
作用:用来存储数组 (每个元素就是一个数组) 当只知道数组长度推荐选用
语法: 数组元素类型[ ][ ] 数组名 = new int[x ][y ] {数组1,数组2....};
动态初始化数组: int[][] arr = new int[3][5]
//一维数组的元素个数可以不写 代表一维数组的元素个数不固定
动态初始化二维数组赋值:
方式1:arr[第几个数组][第几个数组的第几个元素] = 一个元素
方式2:使用遍历循环
for(int[] eles:arrays){
for(int ele:eles){
//此代码块可以赋值或者打印
}
}
方式2;就是将这个二维数组遍历为一维数组然后在遍历一维数组
表示:二维数组内有3个一维数组 每个一维数组内有5个元素
二维数组怎么获取元素
因为二位数组内有两层数组然后用两次循环遍历数组 第一次遍历出来的是
一维数组,第二次遍历出来的是元素
int[] arr1 = {1,2,3};
int[] arr2 = {4,5};
int[] arr3 = {5};
//定义一个二位数组
int[][] arrs = new int[][]{arr1,arr2,arr3};
//遍历循环数组
//此处使用for-each数组
/*语法: for(数据类型/数据组类型 变量:数组){
操作语句
}*/
for(int[] eles:arrs){
for(int ele:eles){
System.out.println(ele);
}
}
打印ele出现的是 123456
打印eles出现的是 {1,2,3} {4,5} {6}
常见的异常
1:NullPointerExceptio: 空指针异常(空索引会遇到)
操作了一个没有内存空间的数组
2:ArrayIndexOutBoundsException: 数组索引越界异常
数组的索引超过了界限异常