1.什么是数组?数组的定义有哪几种格式?
数组是java中的一种容器,长度固定、只能存储同一种数据类型
定义格式:
【1】数据类型[] 数组名称
【2】数据类型 数组名称[]
2.什么时候使用动态赋值?什么时候使用静态赋值?
(1)动态初始化
数据类型[] 数组名 =new 数据类型【数组长度】
示例:int[] arr = new int[3];
注意:!!!
【1】int[] 是数组的数据类型,是一个引用数据类型,占内存的,需要指定数组中存储元素的类型
【2】动态初始化数组创建之后长度是固定的,所以必须先定义数组大小
【3】动态初始化可以拆分为先定义,再赋值的这种方式
(2)静态初始化
标准格式:数据类型[] 数组名 =new 数据类型[]{1,2,3,4}
省略格式:数据类型[] 数组名 = {1,2,3,4}
示例:int[] arr = new int[]{1,2,3,4};(标准) int brr = {1,2,3,4};(省略)
注意:!!!
【1】静态可以不写数组大小,但创建之后的长度也是固定的,不能再改变大小,还有索引也是从0开始到数组长度-1
【2】标准格式可以拆分成先定义,再赋值的方式
【3】省略格式不可以拆分成两部分,只能定义和赋值写在一起
【4】等号前面的数据类型,必须和等号后面的数据类型一致
(3)应用场景:
一般 在数组定义的时候就已知数组中元素的内容的时候,使用静态初始化
在数组定义的时候未知数组中元素的内容,使用动态初始化
3.堆中存放的是什么?栈中存放的是什么?
【1】内存图:
堆:所有new的对象都在堆中
栈:保存的是变量,指向堆内存中的地址值
4.数组越界异常是怎么产生的?数组空指针异常是怎么产生的?
(索引值:数组创建出来之后,会为每一个元素分配一个编号,改编号从0开始,到数组的长度-1为止)
【1】数组索引越界异常:当访问的数组的索引值超过了数组最大的索引值的时候,引发该异常
(解决:不要超过最大索引值,最大索引值是数组长度 - 1)
【2】空指针异常:当一个引用数据类型的变量被赋值为null后,再使用该变量调用方法或者访问数组元素等操作时,
会报该异常
(解决方案:不要给引用数据类型赋值为null)
!!!注意:有的时候null,并不是由我们手动给的null值,而是在数组中引用数据类型,不赋值默认就是null |