Java流程控制

1.用户交互Scanner

在这里插入图片描述

  • 别忘记最后的scanner.close
    每次写了Scanner scanner = new Scanner之后就写close,配套一起就不会忘记了!!!!
Scanner scanner = new Scanner(System.in);
//凡是属于io流的类如果不关闭会一直占用资源,要养成好习惯,用完就关掉
scanner.close();

字符串的输入输出

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • next()方法不能得到带有空格的字符串。空格在最前面可以,在后面不行!!!
    在这里插入图片描述
  • 也可以选择不用判断语句
    在这里插入图片描述

数字的输入输出

  • Scanner的hasNextInt()、hasNextFloat()、nextInt()、nextFloat()方法
    在这里插入图片描述
    正确输出
    在这里插入图片描述
    错误输出
    在这里插入图片描述
  • 进入Scanner类(Ctrl+左击),进入代码,可以查看这个类的所有方法。也可以点击structure来查看。
    在这里插入图片描述
  • 例题:输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
    在这里插入图片描述
    在这里插入图片描述

2.顺序结构(基本)

在这里插入图片描述
在这里插入图片描述

3.选择结构(重点)

(1)if选择结构(方便判断区间)(4种)

1)if单选择结构

在这里插入图片描述

  • 例题:判断字符串是否相等(严格区分大小写)
    在这里插入图片描述
    在这里插入图片描述

2)if双选择结构

在这里插入图片描述

  • 例题:考试分数大于60就是及格,小于60就是不及格
    在这里插入图片描述
    在这里插入图片描述

3)if多选择结构

  • 只有一个满足,一个满足整个语句就结束了。可以有很多个else if
  • 注意点:if 语句至多有一个 else 语句,else 语句在所有的 else if 语句之后。
    if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
    一旦其中一个else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。
    在这里插入图片描述
  • 例题:成绩等级划分
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4)嵌套的if结构

在这里插入图片描述- 例如,我们需要寻找一个数,在1-100之间。可以嵌套选择,1-50和50-100,节省时间提高程序效率。

(2)switch多选择结构(匹配一个具体的值)

  • switch :匹配一个具体的值
    在执行case语句时会先匹配,匹配成功就执行当前case后的语句
    case 穿透现象:然后根据是否有break语句才选择是否继续输出下面case中的语句。break相当于终止整个switch。
    在这里插入图片描述
  • case 穿透现象(这一般来说是不该出现的)
    所以在每个case 语句后都要加上break
    在这里插入图片描述
    在这里插入图片描述
  • break :相当于终止这个switch
    若成绩为C,case C 没有 break,而 case D 有 break,所以会执行 C 和 D 的语句才结束
    在这里插入图片描述
  • 为保证结果理想,所以要在每个case 语句块后都加上 break。
    在这里插入图片描述
  • 找不到匹配的项 ,执行 default 语句块
    在这里插入图片描述

2)支持 String字符串类型的比较

  • 之前是八大基本类型的比较(上面的例子),JDK7 才有的新特性,表达式结果可以是字符串!!!
    在这里插入图片描述
    在这里插入图片描述
  • 但字符的本质还是数字
    反编译
    java 文件编译之后变成 class 文件(字节码文件),人是看不懂的。要想看懂就得进行”反编译“,反编译成我们的 java 程序或者一些东西。反编译的工具有很多,eg:IDEA
  • 反编译去哪里看:IDEA窗口---->file----->Project Structure 或者快捷键Ctrl+Alt+Shift+S
    在这里插入图片描述
    在这里插入图片描述
    这里就是执行的class文件
    在这里插入图片描述
    右键打开,是一对乱码,根本看不懂,所以需要反编译
    在这里插入图片描述
    反编译的操作:Ctrl + C 和 Ctrl + V 会出现不能创建文件的错误提示“cannot create class file”。正确做法是:右击项目包,选择打开文件夹,选择文件
    在这里插入图片描述
    在这里插入图片描述
    复制过去后会发现图标有变化,01图标表示字节码文件,双击即可查看反编译后的文件
    在这里插入图片描述
    在这里插入图片描述
  • hashCode:每一个对象都有一个hashCode,它是通过一些特定算法生成的。名字里的中文都有自己的哈希值,通过比较哈希值来确定匹配的
  • hashcode可以理解为每个数据都被赋予一个身份证,然后就用这个身份证去找你要的数据
  • 哈希是通过特点算法,给每一个“东西”一个唯一的值
    (好像说是高级版本不显示hashCode,本机没有)
    在这里插入图片描述

4.循环结构

(1)while 循环—>先判断后执行

在这里插入图片描述

  • 正常循环(会终止的,会结束的)
    在这里插入图片描述
  • 死循环 while(true)
    (在正常业务中应该尽量避免,否则会影响程序性能,会崩溃卡死)
    少部分情况下需要一直执行
public static void main(String[] args) {
        //无限循环(死循环)
        //正常业务中,需要尽量避免死循环
        while(true){
            //eg:等待客户端连接
            //eg:定时检查
        }
    }
  • 例题:计算1~100求和
    在这里插入图片描述

(2)do…while循环(至少执行一次)–>先执行后判断

  • 即使不满足条件,至少执行一次
    在这里插入图片描述
  • 例题:计算1~100求和
    在这里插入图片描述
  • 对比while循环和do…while循环
    在这里插入图片描述

(3)for循环(重点)

在这里插入图片描述
在这里插入图片描述

  • IDEA 快捷键:
    输入 100.for → 会自动生成 for (int i = 0; i < 100; i++) {}

关于for循环有以下几点说明

  1. 最先执行初始化步骤,可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
for (; i < 100; i++){}
  1. 然后,检测布尔表达式的值,如果为 true,循环体被执行。如果为 false,循环终止,开始执行循环体后面的语句。
  2. 执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)。
  3. 再次检测布尔表达式,循环执行上面的过程。
  • 三个均可以为空,是一种死循环的写法
//死循环
for(; ; ){}
  • 例题1:计算 0~100 之间的奇数和偶数的和
    在这里插入图片描述
    用while实现:
        int sum1 = 0;
        int sum2 = 0;
        int a = 0;
        while(a<=100){
            if(a%2==0){
                sum2+=a;
            }else{
                sum1+=a;
            }
            a++;
        }
        System.out.println(sum1);
        System.out.println(sum2);
  • 例题2:用 while 或 for 循环输出1~1000之间能被5整除的数,并且每行输出3个
    在这里插入图片描述

print 和 println 的差别

  • println:输出完会换行
  • print:输出完不会换行(会在一行内无限输出)

用while实现:

        int i = 0;
        while(i<=1000){
            if(i%5==0){
                System.out.print(i+"\t");
            }
            if(i%15==0){
                System.out.println();
            }
            i++;
        }
  • 例题3:打印九九乘法表(个人想法看代码注释,他教的步骤我是不理解)
  1. 我们先打印第一列,这个大家应该都会
  2. 我们把固定的1再用一个循环包起来
  3. 去掉重复项,j <= i
  4. 调整样式
    在这里插入图片描述

在Java5中引入了一种主要用于数组的增强型for循环

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.break&continue

  • break 在任何循环语句的主体部分,均可用 break 控制循环的流程。
  • break 用于强行退出循环,不执行循环中剩余的语句。(break 语句也在 switch 语句中使用)。
  • continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
    在这里插入图片描述
break :强制退出整个循环,但没有终止程序
  • 以循环中的break为例(switch的break可以回过头去看)
  • 总之,break 用于强制退出语句块
    在这里插入图片描述
continue :终止某次循环过程,即跳过循环体中尚未执行的语句,进行下一次循环的判定

在这里插入图片描述

goto(知道了解就好,代码完全不用掌握)→标签的使用

不建议使用
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值