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 数组操作的常见问题

  1. 定义错误: 动态初始化定义数组,必须指定长度

    静态初始化,不能写长度 //int[] arr = new int[3]{10,20,30,40};//错误,这种格式下,不能指定长度

  1. 索引越界异常: 使用索引,超出了索引的范围,就会抛出索引越界异常 索引越界异常:在程序运行的时候会抛出

  2. 空指针异常:给数组变量赋了一个值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))

        所有的引用数据类型,默认初始化值都是null(null常量)

  • 寄存器:即将交给CPU执行的指令

  • 本地方法区:存储native修饰的方法

1.4 jvm内存图解

 

1.5 两个数组指向一个对象内存图

 

 

posted @ 2021-12-28 22:57  进击的小蔡鸟  阅读(65)  评论(0编辑  收藏  举报