java基础知识点4(数组和jvm图解)☆
1.1 数组的定义格式
//动态初始化:指定数组的长度,有默认初始化值
//静态初始化:创建数组并附初始化值
能够使用两种方式完成数组元素的初始化
动态初始化:int[] arr = new int[10];
静态初始化:int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10};
静态初始化:int[] arr = {1,2,3,4,5,6,7,8,9,10};
1.2 数组操作的常见问题
定义错误: 动态初始化定义数组,必须指定长度
静态初始化,不能写长度 //int[] arr = new int[3]{10,20,30,40};//错误,这种格式下,不能指定长度
索引越界异常: 使用索引,超出了索引的范围,就会抛出索引越界异常 索引越界异常:在程序运行的时候会抛出
空指针异常:给数组变量赋了一个值null(空),那么对象就不存在了(房子被拆了) 在使用数组,就会抛出空指针异常
1.3 JVM 运行时内存
方法区:加载运行后的.class文件
栈内存:运行方法(main方法),方法中的变量存储的都是局部变量,在出了变量的作用域,就会在内存中消失
堆内存:存储对象(new出来的)
每个堆内存中的对象都有一个十六进制的地址值
我们可以使用这个地址值,来找到这个对象
堆内存中存储数据都有默认初始化值
基本数据类型:4类8种
整数:byte,short,int,long初始化值为0
小数:float,double初始值为0.0
字符:char初始值为'\u0000',也就是一个空格 ' '
布尔:boolean初始值为false
引用数据类型:数组,集合,类(自定义,java提供的(String,Scanner,Random))
寄存器:即将交给CPU执行的指令
本地方法区:存储native修饰的方法
1.4 jvm内存图解
1.5 两个数组指向一个对象内存图