1.数组
存放一组相同数据类型的数
定义一个数组,在内存中申明一串连续的空间
2.描述数组的元素
1)数组名
2)数组类型
3)数组下标(下标从0开始)
4)数组元素
3.数组的长度一旦被定义,不能改变
4.使用数组四步走:
1)声明数组:
数据类型[] 数组名;
数据类型 数组名[];
2)分配数组空间
数组名 = new 数据类型[数组大小];
1)2)声明数组并分配空间
数据类型[] 数组名 = new 数据类型[数组大小];
数据类型 数组名[] = new 数据类型[数组大小];
3)给数组元素赋值
数组名[下标] = 数值;
4)使用
数据类型 变量= 数组名[0]+数组名[数组大小-1];
注意事项:
1)第一元素: 数组名[0]
2)最后一个元素:数组名[数组大小-1]
3)数组被分配空间之后,都会有个默认值(根据数据类型有不同的默认值)
String - null
byte int short long --0
float double --0.0
boolean - false
char - ''
5.批量赋值:
1)声明并赋值
数据类型[] 数组名 = {值1,值2,值3…};
数据类型[] 数组名 = new 数据类型[]{值1,值2,值3…};
2)循环赋值
循环体{
数组名[i] = 数值;
}
注意:创建数组并赋值,必须在同一条语句完成!
6.获取数组的长度
数组名.length
数组名[数组名.length] 会发生数组越界异常java.lang.ArrayIndexOutOfBoundsException
7.内存
寄存器:速度最快
1)存放临时参与计算的结果等
栈内存:速度紧次于寄存器,先进后出,后进先出
1)基本数据类型变量
2)数组名
3)引用数据类型的变量名
堆内存:速度慢,先进先出,后进后出
1)对象(具体的对象值)
2)数组(具体的数组元素)
8.GC - 垃圾回收器
栈内存和堆内存中变量失效的 ,垃圾回收器会自动回收
1.冒泡排序
口诀:
1)N个数字来排队
2)两两比较小靠前
3)外层循环N-1
4)内层循环N-i-1
(只要符合条件就两两交换–内层循环交换)
2.选择排序
选出相应的下标
(在外层进行交换)
3.Arrays 方法
1)Arrays.toString(数组名)
将数组转换为字符串
2)Arrays.sort(数组名);
升序排序
3)Arrays.equals(数组1,数组2);
比较两个数组是否相同
4)Arrays.copyOf(数组,长度)
将数据复制指定长度,到新的数组
5)Arrays.binarySearch(数组名,值)
查询升序排序数组,指定值的下标
6)Arrays.fill(数组名,值)
将数组每个元素全部赋值为指定的值
4.二维数组
int[] nums = new int[4];
一维数组起个别名:srr
srr[] srrs = new srr[5];
语法:
数据类型[][] 数组名 = new 数据类型[n][m];
数据类型 数组名[][] = new 数据类型[n][m];
数组名.length -- 一维的长度(班级的数目)
数组名[i].length -- 二维的长度 (每个班的人数)
m班n个学生成绩
数组名[m][n] --获取的具体的某个元素
5.二维数组注意事项
1)数据类型[][] 数组名 = new 数据类型[n][];
a.第二维数据为空
b.给第二维数组赋值
数组名[i] = new 数据类型[m];
2)二维数组声明并赋值
数据类型[][] 数组名 = new 数据类型[][]{{值1,值N..},{值1,值N..}};
数据类型[][] 数组名 = {{值1,值N..},{值1,值N..}};