数组
1、数组的概念
数组:是集合当中的一种,且是集合中最原始简单的一种。
集合:将一组数据集中放置在一起,可以对数据进行批量操作。
2、数组的特点
1、只能存放统一数据类型的数据
2、所有数组数据(元素)存放在连续的内存空间中
3、数组的大小(长度)一旦确定,不能更改
3、数组的语法
数组的声明语法(1)
数据类型 [] 数组名 = {数据1,数据2,数据3,...数据n}
int [] input = {34,35,76,89,56,.....100}
数组的声明语法(2)
数据类到 [] 数组名= new 数据类型[数组长度];
double [] input = new double[6];
4、引用数据类型和基本数据类型的区别
引用数据类型变量空间中存放的引用值(地址值),该值指向真正的数据
基本数据类型变量空间中存放的是基本数据类型本身
5、数组元素的访问语法
什么是数组元素?
数组中的每一个数据,都是数组元素
数组元素的访问语法:数组名[下标]
下标范围:最小下标为0,最大下标 数组长度 - 1 (数组名.length 表示数组长度)
6、数组的操作
1、数组的拷贝
// 存在一个整型数组,备份一下怎么办?(在堆空间中 创建一个一样的数组)
int a = 100;
int b = a; // 备份a的数据
int[] ary = {10,20,30,30,40,50};
int[] newAry = ary;
newAry[0] = 111;
System.out.println(ary[0]);
// 数组的拷贝
int[] ary = {10,20,30,999,40,50};
// 1. 新建一个数组,且 数组长度等于老数组长度
int[] newAry = new int[ary.length];
// 将老数组元素 一一 赋值给 新数组
// 遍历 老数组
for(int i = 0;i < ary.length;i++){
newAry[i] = ary[i];
}
// 利用循环 查询新数组数据
// 下标从0开始,最大下标为 数组长度 - 1
for(int i = 0;i < newAry.length;i++){
System.out.print(newAry[i] + " ");
}
2、数组的增加
// 数组元素的增加
int[] ary = {10,20,30,30,40,50};
// 输入一个数,将这个数放到到 ary下标为 2的位置
// 增加后 数组为 {10,20,num,30,30,40,50};
// 创建一个数组长度 比老数组大1的新数组
int[] addAry = new int[ary.length + 1];
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数");
int num = input.nextInt();
// 将输入的num 数据 放入新数组下标为2的位置,
// 然后将原本老数组的数据依照对应位置赋值
// 遍历老数组
for(int i = 0;i < addAry.length;i++){ // i表示新数组的下标
if(i < 2){
addAry[i] = ary[i];
}else if(i == 2){
addAry[i] = num;
}else {
// 此时i大于等于3的
addAry[i] = ary[i - 1];
}
}
for(int i = 0;i < addAry.length;i++){
System.out.print(addAry[i] + " ");
}
3、数组的减少
int[] ary = {10,20,30,30,40,50};
// 删除 数组 ary中 下标为3的元素,删除后 数组长度减一 {10,20,30,40,50}
// 创建一个数组长度 比 老数组 少一的数组
int[] delAry = new int[ary.length - 1];
for(int i = 0;i < delAry.length;i++){
if(i < 3){
delAry[i] = ary[i];
}else if(i >= 3){// i > 3时 i=3的情况 就被我忽略了
delAry[i] = ary[i + 1];
}
}
// PS: 对数组进行操作时,一定注意 边界情况
for(int i = 0;i < delAry.length;i++){
System.out.print(delAry[i] + " ");
}
4、数组里面的数据从小到大排序(冒泡排序)
冒泡排序
// 有一个乱序数组,要将数组中的元素 按照数据的从小到大进行排序
// 3 7 20 42 90 412
int[] array = {20,42,3,412,90,7,4234,23,11,-4,5,-100};
// 比较轮数 数组长度减一
// 每次比较次数,随着比较轮数的递增而递减
for(int i = 0;i < array.length - 1;i++){ // 0 - 4
for(int j = 0;j < array.length - 1 -i;j++){
// 做比较
if(array[j] > array[j + 1]){// 交换两数位置
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
System.out.println("排序后");
for(int i = 0;i < array.length;i++){
System.out.print(array[i] + " ");
}