数组
1. 数组的定义
数据类型[] 数组名字
如:int[ ] x;
2.数组的初始化
(1)静态初始化 :有元素 有长度
int[ ] array =new int[ ]{1,2}
或者
int[ ] array ={3,5,6}
(2) 动态初始化 int[ ] array =new int[数组长度] 有长度,无元素(有默认值)
整数 默认为0
浮点数 默认为0.0
字符型 默认为0对应的Unicode码
布尔型 默认值false
引用类型 默认值null
3.数组元素的访问
(1)用index索引来访问数组的元素,若下标越界,会出现运行时异常的。 ArrayIndexOutOfBoundsException(数组索引越界)
int value=array[index]
(2)数组元素的遍历
1,用普通循环
存取都可以,通过index访问数组元素的位置,可操作数组的每个元素。
2,jdk1.5之后用增强for循环(forEach)
for(value:array)
value是用来接数组元素的变量,array是被遍历的数组名。但是它不能存值,只能取值。不知道元素位置。
3.数组为引用数据类型。数组是存储在堆内存中的一串地址。
4.基本类型与引用数据类型的内存区别
(1)基本数据类型
(2)引用数据类型
总结:
1.数组内部存储元素,可以是基本类型,也可以是引用类型。
2.数组是存储在堆内存中的一串连续的地址。如果要用变量来存储数组,变量空间在栈内存中,变量中存储数组第一个元素的地址。
3.数组的长度一旦确定,就不能发生改变。
二维数组
1.定义
int [ ] [ ] array ;
2.初始化
(1)静态初始化
int[ ][ ] array={{ },{ },{ }}
(2)动态初始化
int[ ][ ] array=new int[3][2] 数组中有3个小数组,每个小数组中有2个元素。同样有长度,无元素(有默认值)。2是不能不写的,不写会出现空指针异常(小数组中是空的)
3.数组元素的访问
int value=array[i][j]二维数组中第i个小数组的第j个元素。(i j都是从0开始的index)
4.遍历数组
(1)普通循环
for 循环的嵌套
(2)forEach
for(int arr:array){
for(int v:arr){
}
} array是二维数组,arr是二维数组中存的小数组。
5.内存存储
例题
常见的运行时异常