数组:为系统开辟连续内存空间
动态初始化 只指定长度,由系统给初始化值
格式:type [] name = new type[length]
整形:byte,short,int,long--初始值为0
浮点:float,double--初始值为0.0
布尔:boolean--初始值为false
字符:char--初始化值为'\u0000'每一位都是十六进制
静态初始化 给出初始化值,由系统决定长度
格式:type [] name = new type [] {a,b,c};可先声明再赋值
type [] name = {a,b,c}; 声明与赋值必须同事进行
type [] name = {a,b,c}的存储过程
1)在栈内存中开辟一个空间存name
2)在对内存中开辟三个空间,每个空间给个初始化值
3)数组内容重新给值
4)栈内存存放堆内存地址
常见实例:
取最值,
反转,
查表法,
元素查找
二维数组
- 格式: type [] [] name = new type [row] [col];
解释: 定义 一个二维数组,里面包含row个一位数组,每个一维数组有col个空间
- 格式:type [] [] name = new type [row] []; 声明了二维数组
type[] name2 = new type[col] 对二维数组中的一维数组初始化
- 格式:type [] [] name = {{1,2,3},{4,5},{6,7,8,9}}
这种定义方式一维数组的长度可控二维数组内存图:
只有二维数组的引用在栈内存里面,已为数组的引用在堆内存里面
值传递问题:
- 基本数据类型:基本数据类型里面存放的是值,这个值的变化跟那个值的变化没有联系,所以不会改变原值。
- 引用数据类型:引用数据类型里面存放的是地址,引用的是同一个地址,对这个地址里的对象的操作,会保留下来,所以会改变原值。