1. 数组定义?
1>:数组的定义是:
存储多个元素,且数据类型相同,的容器。
2>:数组可以存储的类型:
既可以存储基本类型数据,也可以存储引用类型数据。
基本类型:4类8种
引用类型:类、数组、接口
3>:数组特点:
每个元素都有编号,叫索引。从0开始,为了方便我们获取数据
4>:获取数据格式:
数组名[索引]
2. 数组格式?
2种数据格式
格式1:数据类型 [] 数组名
int[] arr格式2:数据类型 数组名 []
int arr[]推荐第一种格式:
定义一维数组或者二维数组:int[] arr 或者 int[][] arr
3. 数组初始化?
Java中的数组必须先初始化,然后才能使用;
初始化就是:为数组中的元素分配内存空间,并为每个数组元素赋值;
4. 初始化分为2类?
动态初始化:
只给长度,不给元素,系统默认给值
int[] arr = new int[3] ;
静态初始化:
给出元素,不给长度,系统默认会算
int[] arr = new int[]{1,2,3} ;
5. 一维数组动态初始化
int[] arr = new int[3] ;
new:表示给数组申请并分配内存空间
System.out.println(arr) ; // [I@778b3fee 地址值
System.out.println(arr[0]) ; // 0
System.out.println(arr[1]) ; // 0
System.out.println(arr[2]) ; // 0
6. Java中的内存分配?
Java中内存分配有5种:
1>:栈:存储局部变量
- 局部变量定义:方法中或者方法声明上的变量
- 特点:方法调用完毕,立即从内存中消失;
2>:堆:存储new 出来的(实体或对象)
-
实体的特点:
a:实体都有首地址值;
b:实体的内容有默认值:
整数:0;
浮点数:0.0;
字符:'\u0000';
布尔:false;
引用类型:null;
c:在垃圾回收器空闲的时候回收:垃圾就是当栈没有再指向堆中的对象时候,也就是说没有人用堆中对象的时候,就叫做垃圾,但是垃圾回收器也不会立即回收,而是等垃圾回收器空闲的时候才能被回收;
3>:方法区:面向对象
4>:本地方法区:和系统有关
5>:寄存器:和CPU有关
如下图所示:
7. 数组的两个小问题
1>:数组越界:ArrayIndexOutOfBoundsException
原因是:访问的角标不存在;
2>:空指针异常:NullPointerException
原因是:对象已经不再指向堆内存,你还想再访问堆内存的数据,是不可以的;