数组:
1.在内存中存储一组相同数据类型的集合
2.数组会在内存中开辟一块连续的空间来保存数据
3.数组的长度一旦被定义不能被改变
4.数组下标的最大值是,数组长度-1
数组中的相关概念:
1.定义数组
int[] nums;声明一个数组
nums=new int[5];在内存中开辟了5个空间,会给所有元素赋予初始值
num[0]=50;给数组中的第一个位置赋值
因为数组是int类型,那么数组中的其他四个空间默认值是0;
2.数组的基本要素:
nums 标识符/数组的名称 用于区别不同的数组
我们通过nums只能获得数组整体,通过下标获取数组的元素
数组元素:数组中真实存在的数据
元素下标:对数组元素进行的编号
元素类型:数组中每个元素的数据类型
冒泡排序:
实现数值类型数组中的数据从小到大排列
双重循环:外层循环执行一次,内层循环执行一遍
分析:
1.根据数组的长度,我们可以断定比较几轮
2.每轮中比较几次?
外层循环控制几轮,内层循环控制一轮几次
3.真正比较数值大小的是内层循环
4.内层循环比较的时候使用等量转换
5.灯亮转换的条件是下一个值小于上一个值
口诀:
两两相比小靠前
外层循环N-1
内层循环N-1-i
等量转换
插入算法:
1.先定义一个升序数组 预留一个位置
2.获取用户输入的数值
3.定义一个变量用来接收插入数字的下标
4.循环和数组中的每一个元素进行比较
5.循环后移
6.插入数字
Arrays;操作数组的工具类
类中提供了很多方法
我们可以直接通过类名访问
例:
创建数组int[] nums = { 10, 50, 30, 20, 80, 70 };
增强for循环
System.out.println("***********排序之前***********");
for (int num : nums) {
System.out.println(num);
}
1.排序
Arrays.sort(nums);
System.out.println("***********排序之后***********");
for (int num : nums) {
System.out.println(num);
}
2.把数组转换成一个字符串
String result = Arrays.toString(nums);
System.out.println("数组转换成字符串之后======》" + result);
3.将数组中所有的元素改变成同一个值
Arrays.fill(nums, 100);
result = Arrays.toString(nums);
System.out.println("数组元素替换之后======》" + result);
4.复制数组 形成新的数组
int[] newNums = Arrays.copyOf(nums, 10);
result = Arrays.toString(newNums);
System.out.println("数组复制之后======》" + result);
5. 查询元素在数组中存在的位置 前提 必须先排序
int[] nums2 = { 10, 50, 30, 20, 80, 70 };
Arrays.sort(nums2);// 先排序
int index = Arrays.binarySearch(nums2, 80);
System.out.println("80存在的位置:" + index);
6.把String类型的字符串转换成 一个 char类型的数据
String hello = "hello BigData";
char[] array = hello.toCharArray();
for (char i : array) {
System.out.println(i);
}
增强for循环:
int:需要遍历集合的数据类型
num:变量,可以自定义
nums:需要遍历的集合
二维数组:
注意事项:
1.创建二维数组的时候必须指定外围数组的长度
2.如果没有设置内层数组的长度,元素的默认值是null
3.外围数组的长度就是整个数组的长度
4.内层循环中遍历的次数依据内层数组的长度