java数组&ArrayList(内存分配)
数组
存储同种数据类型的多个值
格式一:数据类型[] 变量名
范例: int[] array
格式二:数据类型 变量名[]
范例:int array[]
初始化
动态初始化:指定数组长度,由系统为数组分配初始值
- 格式:数据类型[]变量名 = new 数据类型[数组长度];
- 范例: int[] arr = new int[3]
静态初始化:已经知道数据,直接放进去就可以了。
内存分配
- 栈内存:方法运行时,进入的内存,局部变量都存放于这块内存中
- 堆内存:new出来的内容都会进入堆内存,并且会存在地址值
- 方法区:字节码文件(.class)加载时进入的内存
- 本地方法栈:调用操作系统相关资源
- 寄存器:交给cpu去使用
数组的默认初始化值:
整数0 浮点数0.0 布尔false 字符 空字符 引用数据类型null
引用数据类型:引用,记录了地址值的变量,所对应的数据类型,就是引用数据类型。
出现new就会进堆,new是用来开辟空间的,栈一般放在一级缓存里,缓存空间是比较小的,所以用来临时存储变量,方法等。但是堆空间是比较大的,所以涉及内存操作就会在堆里开辟空间用来存放数据,这时记录了地址值的变量就是引用数据变量,java中引用数据变量有:类,接口,数组
操作
长度:array数据个数:数组名.length
获取最值:
//定义首索引数字最大,一个个比较更新最大值
int[] arr = {12,45,98,73,60};
int max = arr[0];
for(int i = 1;i<arr.length;i++){
if(arr[i]>max){
max=arr[i];
}
}
二维数组
存储一维数组的数组容器
格式1:数据类型[][][] [] 变量名
范例:int[] [] arr
格式2:数据类型 变量名[] []
范例:int arr[] []
格式3:数据类型[] 变量名[]
范例:int[] arr[]
集合(ArrayList)
容量可变
如果存储的数据长度经常发生改变,推荐使用集合
打印String,StringBuilder,集合数据名都不会出现地址
E用引用数据类型替换,例如:
ArrayList<Sting>,ArrayList<Student>
-
构造方法
- 空参构造ArrayList():初始长度为10,后期可扩容
-
成员方法:
-
添加:boolean add(E e)将指定的元素添加到列表尾部
void add(int index,E e)将指定的元素插入列表中的指 定位置
-
删除:boolean remove(Object o)删除指定的元素,返回删除是否成功
E remove(int index)删除指定索引处的元素,返回被删除的元素
-
修改: E set(int index,E element)修改指定索引处的元素,返回被修改的元素
-
查询:E get(int index)返回指定索引处的元素
int size()返回集合中的元素的个数
-
长度:集合名.size()
-
-
<>:
-
起限定作用,可以在<>中限制集合承载的数据类型
-
<>是一种特殊的数据类型,泛型
-