今天我们学习了数组,请根据自己的理解对下列问题进行回答:
今天需要掌握的知识点有:
1.什么是数组?数组的定义有哪几种格式?
数组是一个数据长度固定的容器,存放的数据的数据类型要求一致。
数组的定义有:
(1)动态初始化 ,由系统分配默认值。
定义格式:数据类型[] 数组名 = new 数据类型[数组长度];
或者 数据类型 数组名[] =new 数据类型[数组长度];
通常使用第一种,更容易理解。
(可以先定义,后赋值。如:int[] a; a = new int[3];)
(2)静态初始化,即创建数组时就指定好数组元素中的内容。
定义格式:数据类型[] 数组名 = new 数据类型[]{元素1的值,元素2的值,...} 或者省略格式:数据类型[] 数组名 ={元素1的值,元素2的值,...}
(省略格式的写法不可以先定义,后赋值)
2.什么时候使用动态赋值?什么时候使用静态赋值?
不知道数组元素内容时使用动态赋值;
知道数组元素内容时使用静态赋值。
3.堆中存放的是什么?栈中存放的是什么?
堆中存放的是程序运行时new出来的对象或数组,对外提供地址值,当栈中没有变量指向堆内存的地址值时,一段时间后由垃圾回收处理器回收。
栈中存放的是方法和局部变量,方法执行进栈,执行完毕出栈,方法中的引用类型变量执行的是堆内存中的地址值,当栈内存中main方法出栈后,没有任何变量指向堆内存中的地址值。
4.数组越界异常是怎么产生的?数组空指针异常是怎么产生的?
数组越界是因为访问了不存在的数组索引,解决方法是访问是正确的数组索引。
数组空指针异常是因为把空地址值赋给了数组引用,导致访问数组时出现空指针异常,解决方法是给数组引用正确的堆内存空间。
|