食用前说明:
本文章内容来自B站韩顺平老师的课堂笔记,本人只是将其进行自我整理,内容有所删减,韩顺平老师的B站课程AV号:BV1fh411y7R8
本文章内容来自韩顺平老师的课堂笔记的第6章数组、排序和查找,内容暂时省略二维数组相关内容。
想进一步了解二维数组的话,直接跳转:
6.1 数组介绍
-
可存放多个同一类型的数据。数组也是一种数据类型,是引用类型。
6.2 数组的使用
6.2.1 使用方式 1 -静态初始化
-
初始化数组时,给定了固定的数组大小(即:数组的长度)
-
案例演示
// 法一 double[] scores = new double[5]; // 法二 double scores[] = new double[5];
6.2.2 使用方式 2 -动态初始化
-
初始化后,没有给定数组大小
-
案例演示
// 法一 double[] scores; // 法二 double scores[];
6.3 数组使用注意事项和细节
数组中的元素可以是任何数据类型,但不能混用。
数组创建后,如果没有赋值,会有默认值,下表就是数值类型对应的默认值:
数据类型 默认值 int , short , byte , long 0 float ,double 0.0 char \u0000 boolean false String null 使用数组的步骤
声明数组并开辟空间
给数组各个元素赋值
使用数组
数组的下标从 0 开始。
数组下标必须在指定范围内使用,否则报:下标越界异常,
案例说明
int [] arr=new int[5]; //则有效下标为 0-4
引用类型数组,数组型数据是对象
6.4 数组应用案例
/*
创建一个 char 类型的 26 个元素的数组,分别 放置'A'-'Z'。
使用 for 循环访问所有元素并打印出来。
提示:char 类型数据运算 'A'+1 -> 'B' 思路分析
1. 定义一个 数组 char[] chars = new char[26]
2. 因为 'A' + 1 = 'B' 类推,所以老师使用 for 来赋值
3. 使用 for 循环访问所有元素
*/
public class ArrayExercise01 {
//编写一个 main 方法
public static void main(String[] args) {
char[] chars = new char[26];
for( int i = 0; i < chars.length; i++) {//循环 26 次
//chars 是 char[]
//chars[i] 是 char
chars[i] = (char)('A' + i); //'A' + i 是 int , 需要强制转换
}
//循环输出
System.out.println("===chars 数组===");
for( int i = 0; i < chars.length; i++) {//循环 26 次
System.out.print(chars[i] + " ");
}
}
}
-
运行结果
===chars 数组===
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
6.5 排序的介绍
-
将数据(数组)按指定的规则,进行排列
6.6 冒泡排序法
-
基本思想:
通过对排序序列从后向前(从下标较大的元素开始),依次比较相邻元素 的值的大小,决定是否交换,使值较大的元素逐渐从前移向后挪动,就象水底下的气泡一样逐渐向上冒。
-
案例演示
//冒泡排序算法 //声明数组,并给定数值 int[] numbers = new int[]{1,5,8,2,3,9,4}; //需进行length-1次冒泡 for (int i = 0; i < numbers.length - 1; i++){ for (int j = 0; j < numbers.length - 1 - i; j++){ if (numbers[j] > numbers[j + 1]){ int temp = numbers[j]; numbers[j] = numbers[j + 1]; numbers[j + 1] = temp; } } } System.out.println("从小到大排序后的结果是:"); for(int i = 0; i < numbers.length; i++) System.out.print(numbers[i] + " ");//打印排序后的结果
-
运行结果
从小到大排序后的结果是: 1 2 3 4 5 8 9
6.12 查找
6.12.1 介绍
-
java 中,常用的查找有两种:
-
顺序查找
-
二分查找
-
6.12.2 顺序查找
public static void main(String[] args) {
//定义一个字符串数组
String[] names = {"北京", "上海", "广州", "深圳"};
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入四大一线城市:");
String findName = myScanner.next();
//遍历数组,逐一比较,如果有,则提示信息,并退出
int index = -1;//插一个为'负数的旗'
for(int i = 0; i < names.length; i++) {
//比较 字符串比较 equals, 如果要找到名字就是当前元素
if(findName.equals(names[i])) {
System.out.println("恭喜你找到 " + findName);
System.out.println("下标为= " + i);
//把 i 保存到 index
index = i;//找到了更换'旗'
break;//退出
}
}
if(index == -1) { //根据判断是否换'旗',判断有无找到
System.out.println("sorry ,你输入的不属于四大一线城市 " + findName);
}
}
-
运行结果
====效果1======
请输入四大一线城市:
深圳
恭喜你找到 深圳
下标为= 3
====效果2======
请输入四大一线城市:
东莞
sorry ,你输入的不属于四大一线城市 东莞