|
1.java数组的定义格式:
格式1:
数据类型[] 变量名;
例如:int[] arr;
解:定义里一个int类型的数组,数组名为arr ;
格式2:
数据类型 变量名[];
例如: int arr[];
解: 定义了一个int 类型的变量,变量名为arr 数组;
2.数组动态初始化;
例如: int[] arr = new int[3];
解:
左边:
int :说明数组中的元素类型是int 类型;
[] : 说明这是一个数组
arr : 这是数组的名称;
右边:
new: 为数组申请内存空间;
int: 说明数组中的元素类型是int 类型;
[] : 说明这是一个数组;
3 : 数组长度为3; 其实就是数组中的元素个数
备注:数组在初始化时,回味储存空间添加默认值:
整数:0
浮点数:0.0
布尔值: false
字符: 空字符
引用数据类型: 默认值是null
所以 直接输出案例 arr[2] 是有值的 是 0 ;
3. Java 的 内容分配:
int[] arr = new int[3];
这里内存分配这么理解:
new 是创建一个内容空间; 空间长度是3 存储int 类型;
左侧是一个变量, arr 为变量名 该变量指向 右侧的储存空间;
左侧: 栈内存 - 存储局部变量;
使用完毕后会立即消失;
右侧:堆内存 - 存储new出来的内容(实体,对象);
每一个new 出来的东西都有一个地址值,使用完毕会在垃圾回收器空闲时被回收。
4.关于内存分配的一个点:
int[] arr = new int[3];
int[] arr2 = arr;
这个知识点是这样的: arr2 指示在栈内存中增加类一个变量 同样指到arr的堆内存 。并没有新增堆内存。
所以 当任意一个栈内存 修改了堆内存, 另外的栈内存去访问堆内存得到的 数据值一定是改变过了的,毕竟是一个内存;
5.数组静态初始化:
5.1 写法 :数据类型[] 变量名 = new 数据类型[]{'数据1','数据2','数据3'};
例如:int[] arr = new int[]{
数据1,数据2,数据3
};
备注: 右侧int[]的中括号中 不可以写长度;
简化写法: 数据类型[] 变量名 = {数据1,数据2,数据3}
例如: int[] arr = {数据1,数据2,数据3}
|
|