数组的定义:
1. 数据类型[ ] 数组名(a); (定义一个int类型的数组a变量)
2. 数据类型 数组名(a)[ ]; (定义一个int类型的a数组变量)
对数组初始化:
初始化:为数组开辟内存空间,并为每个数组元素赋予值。
两种初始化方式:
动态初始化:初始化时只指定数组的长度,由系统为数组分配初始值。
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组的长度。
动态初始化:
格式:数据类型[ ] 数组名 = new 数据类型[数组长度];
int[ ] arr = new int[3];(定义一个int类型的数组,这个数组中可以存放3个int类型的值)
静态初始化:
格式:数据类型[ ] 数组名 = new 数据类型 [ ]{元素1,元素2,......};
int [ ] arr = new int[ ]{1,2,3};
简化后:int[ ] arr = {1,2,3};
注意事项:
不要同时动态和静态初始化。
如以下格式:
int[ ] arr = new int[3]{1,2,3}; //错误
数组操作常见的两个小问题:
1. ArrayIndexOutOfBoundsException:数组索引越界异常
原因:访问了不存在的索引,即访问位置超出数组规定区域。
2. NullPointerException: 空指针异常
原因:数组已经不在指向堆内存,但是还是使用数组名去访问元素。
求数组的长度:
格式:数组名.length //此时返回的就是数组的长度
初始化后每个元素都有一个初始值:
byte,short,int,long类型的默认值为0
float,doule类型的默认值为0.0
char类型的默认值为'\u0000'
boolean类型的默认值为false
引用类型的默认值为null
系统会为每一个数据存放位置,一般的存放位置如下;
栈:存放的是局部变量(在方法定义中或者方法声明上的变量都称为局部变量)
堆:存放的是java中定义变量时所有new出来的东西
方法区:是面向对象的详细讲解
本地方法区:此内存空间与系统空间有关
寄存器:供CPU使用
在栈中如果两个引用指向同一个堆内存空间,无论是他们谁的操作,都是针对同一个地方。