Java学习笔记(五)

目录

一、控制结构

[1.1 顺序控制](#1.1 顺序控制)

[1.2 分支控制](#1.2 分支控制)

(一)单分支

(二)双分支

(三)多分支

(四)嵌套分支

(五)switch分支

[1.3 循环控制](#1.3 循环控制)

[(一)for 循环控制](#(一)for 循环控制)

[(二)while 循环控制](#(二)while 循环控制)

[(三)do...while 循环控制](#(三)do…while 循环控制)

(四)多重循环控制

[1.4 特殊(break、continue、return)](#1.4 特殊(break、continue、return))

(一)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;
}
  1. switch 关键字,表示swtich分支。
  2. case 常量1:当表达式的值等于常量1,就执行 语句块1
  3. break:表示退出swtich
  4. 如果和 case 常量1 匹配,就执行语句块1,如果没有匹配,就继续匹配 case 常量2
  5. 如果一个都没有匹配上,执行default

注意事项

  1. 表达式数据类型,应和case 后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是 int
  2. switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum,String)
  3. case子句中的值必须是常量,而不能是变量
  4. default子句是可选的,当没有匹配的case时,执行default
  5. 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 排序的分类

  1. 内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法)。
  2. 外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。

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));
        }
    }
}
相关推荐
kinlon.liu9 分钟前
零信任安全架构--持续验证
java·安全·安全架构·mfa·持续验证
李小星同志10 分钟前
高级算法设计与分析 学习笔记6 B树
笔记·学习
霜晨月c22 分钟前
MFC 使用细节
笔记·学习·mfc
王哲晓30 分钟前
Linux通过yum安装Docker
java·linux·docker
Jhxbdks34 分钟前
C语言中的一些小知识(二)
c语言·开发语言·笔记
java66666888834 分钟前
如何在Java中实现高效的对象映射:Dozer与MapStruct的比较与优化
java·开发语言
Violet永存35 分钟前
源码分析:LinkedList
java·开发语言
小江湖199435 分钟前
元数据保护者,Caesium压缩不丢重要信息
运维·学习·软件需求·改行学it
执键行天涯36 分钟前
【经验帖】JAVA中同方法,两次调用Mybatis,一次更新,一次查询,同一事务,第一次修改对第二次的可见性如何
java·数据库·mybatis
AlexMercer10121 小时前
【C++】二、数据类型 (同C)
c语言·开发语言·数据结构·c++·笔记·算法