Java-数组-02
1 数组声明
1.1 静态声明
在知道数组中每个元素的值的时候,使用静态声明的方式
数据类型[] 变量名 = {值,值,值…};
数据类型 变量名[] = {值,值,值…};
int[] is ={1,2,3,4,5};
int is[] = {1,2,3,4,5};
1.2 动态声明
在预先不知道每个元素的值是多少的时候,使用动态声明,需要提前指定数组的容量大小,并使用默认值占位
整数默认值0
浮点默认值0.0
char默认值\u0000
boolean默认值false
引用类型默认值null
数据类型[] 变量名 = new 数据类型[长度];
int[] is = new int[5];
2 基本操作
2.1 获取数据(查)
数组对象(数组变量)[下标]
下标:index
首元素: 变量名[0];
数组长度: 变量名.length
尾元素: 变量名[length-1];
2.2 设置数据(改)
数组对象[下标] = 值;
2.3 遍历
使用循环进行遍历操作
for和foreach
//把arr数组中的元素依次取出并赋值给i
for(int i : arr)
2.4 常见异常
2.4.1 下标越界异常
报错: java.lang.ArrayIndexOutOfBoundsException
例如: 数组中长度为3,但是操作数组的下标大于数组长度-1,is[3]
2.4.2 空指针异常
报错: java.lang.NullPointerException
使用null值访问属性,所有就没有堆内存数组空间
所以找不到数组对象,就无法操作数组
注意: null和长度为0是两个不同的概念
2.5 数组传递
第三种声明方式 静态声明
数据类型[] 变量名 = new 数据类型[]{值.值.值…};
2.5.1 传值和传引用
如果传入的是基本数据类型,传入的就是值
如果传入的是引用数据类型,传入的就是引用地址
2.6 数组复制
2.6.1 自己实现
2.6.2 API
不需要自己去编写实现的功能,就是很多常用功能已经存在了,直接调用API即可
2.6.3 插入式复制
3 二维数组
3.1 声明
3.1.1 静态声明
数据类型[] [] 变量名 = {值,值,值…};
3.1.2 动态声明
数据类型 变量名[] [] =new int[x] [y];
x表示有几个一维数组也就是行
y表示一个一维数组中有几个元素,也就是列
3.2 基本操作
4 Scanner
接收命令行输入
5 排序
5.1 交换变量的值
5.1.1 中间变量
5.1.2 位移运算
5.1.3 加减运算
5.2 冒泡排序
比较相邻的两个元素,如果第一个比第二个大,就交换位置
对每一个相邻的元素进行重复操作,这样执行完一轮后,最后一个元素肯定是最大的
一直重复以上步骤,除了最后一个元素(比较次数一次递减)
直到没有任何一对元素,终止冒泡
嵌套循环:
外层循环决定比较多少轮
内层循环决定一轮比较多少次
5.3 选择排序
每次都把数组当中最小的放在左边
先拿出第一个,假设是最小的,然后挨个和后面的所有元素比较,找到最小的元素,放到前面
5.4 API