目录
[1.1 顺序控制](#1.1 顺序控制)
[1.2 分支控制](#1.2 分支控制)
[1.3 循环控制](#1.3 循环控制)
[(一)for 循环控制](#(一)for 循环控制)
[(二)while 循环控制](#(二)while 循环控制)
[(三)do...while 循环控制](#(三)do…while 循环控制)
[1.4 特殊(break、continue、return)](#1.4 特殊(break、continue、return))
[2.1 排序的分类](#2.1 排序的分类)
[2.2 冒泡排序](#2.2 冒泡排序)
一、控制结构
1.1 顺序控制
程序从上到下逐行执行,中间没有任何判断和跳转。
1.2 分支控制
(一)单分支
- 基本语法
java
if(条件表达式){
执行代码块;
}
- 当条件表达式为ture 时,就会执行 { } 的代码。如果为false,就不执行。
- 特别说明,如果 { } 中只有一条语句,则可以不用 { } ,建议写上 { }
(二)双分支
- 基本语法
java
if(条件表达式){
执行代码块1;
}
else{
执行代码块2;
}
- 当条件表达式成立,即执行代码块1,否则执行代码块2。如果执行代码块,只
有一条语句,则 { } 可以省略,否则,不能省略
(三)多分支
- 基本语法
java
if (条件表达式1){
执行代码块1;
}
else if (条件表达式2){
执行代码块2;
}
......
else{
执行代码块n;
}
- 当条件表达式1成立时,即执行代码块1,如果表达式1不成立,才去判断表达式2是否成立,如果表达式2成立,就执行代码块2......以此类推,如果所有的表达式都不成立则执行 else 的代码块,注意,只能有一个执行入口。
(四)嵌套分支
在一个分支结构中又完整的嵌套了另个完整的分支结构。里面的分支的结构称为内层分支外面的分支结构称为外层分支。规范:不要超过3层。(可读性不好)
- 基本语法
java
if (){
if (){
if-else
}else{
if-else
}
}
- 当条件表达式1成立时,即执行代码块1,如果表达式1不成立,才去判断表达式2是否成立,如果表达式2成立,就执行代码块2......以此类推,如果所有的表达式都不成立则执行 else 的
(五)switch分支
- 基本语法
java
switch(表达式){ //表达式是一个具体的值
case 常量1:
语句块1;
break;
case 常量2:
语句块2;
break;
...
case 常量n:
语句块n;
break;
default:
default 语句块;
break;
}
- switch 关键字,表示swtich分支。
- case 常量1:当表达式的值等于常量1,就执行 语句块1
- break:表示退出swtich
- 如果和 case 常量1 匹配,就执行语句块1,如果没有匹配,就继续匹配 case 常量2
- 如果一个都没有匹配上,执行default
注意事项
- 表达式数据类型,应和case 后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是 int
- switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum,String)
- case子句中的值必须是常量,而不能是变量
- default子句是可选的,当没有匹配的case时,执行default
- break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾
1.3 循环控制
(一)for 循环控制
java
for (循环变量初始化;循环条件;循环变量迭代){
循环操作;
}
- for 关键字,表示循环控制
- for有四要素:(1)循环变量初始化;(2)循环条件;(3)循环操作;(4)循环变量选代
- 循环操作,这里可以有多条语句,也就是我们要循环执行的代码
- 如果 循环操作(语句)只有一条语句,可以省略 4,但建议不要省略
(二)while 循环控制
java
循环变量初始化;
while(循环条件){
循环体;
循环变量迭代;
}
- while也有四要素,只是位置不一样
(三)do...while 循环控制
java
循环变量初始化;
do{
循环体;
循环变量迭代;
}while(循环条件);
do...while是关键字,有四要素,只是位置不一样
(四)多重循环控制
- 将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for, while, do...while均可
以作为外层循环和内层循环。[建议一般使用两层,最多不要超过3层。否则,代码的可读
性很差] - 实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为
false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环 - 设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次
1.4 特殊(break、continue、return)
(一)break
当有一个循环但次数不知道,break可以做到------当某个条件满足时,终止循环
- break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块
java
lable1:
for (int j=0;j<4;j++){
lable2:
for (int i=0;i<10;i++){
if (i==2){
break lable1;
}
}
}
- break 语句可以指定退出哪层
- label 是标签
- break 后指定到哪个label 就退出到哪里
- 在实际的开发中,尽量不要使用标签
- 如果没有指定 break,默认退出最近的循环体
(二)continue
- continue语句用于结束本次循环,继续执行下一次循环
- continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环,这个和前面的标签的使用的规则一样
(三)return
一般使用在方法,表示跳出所在的方法
二、排序
排序是将多个数据,依指定的顺序进行排列的过程。
2.1 排序的分类
- 内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法)。
- 外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。
2.2 冒泡排序
通过对待排序序列从后往前,一次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前往后移,就像水底下的气泡一样逐渐向上冒。
具体代码如下:
java
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
int[] arr = { 25, 63, 24, 15, 96, 57, 15, 36, 45 };
int temp = 0;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
System.out.println(Arrays.toString(arr));
}
}
}