选择结构

  1. 选择结构有特定的语法规则

  2. 代码要执行具体的逻辑运算进行判断(代码执行有条件)

  3. 逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码(根据不同的条件执行不同的代码)

Java语言提供了两种选择结构语句

  1. if语句

  2. switch语句

if语句第一种格式

第一种格式(当条件满足的时候,才执行if语句的语句体)

 if(关系表达式) {             语句体        }

执行流程

  • 首先判断关系表达式看其结果是true还是false

  • 如果是true就执行语句体

  • 如果是false就不执行语句体

注意事项:

  1. 关系表达式无论简单还是复杂,结果必须是boolean类型

  2. if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。

  3. 一般来说:有左大括号就没有分号,有分号就没有左大括号


if语句的第二种格式

if语句第二种格式:对同一条件满足与否,执行不同的代码

        if(关系表达式) {           语句体1;          }else {            语句体2;         }

执行流程

  • 首先判断关系表达式看其结果是true还是false

  • 如果是true就执行语句体1

  • 如果是false就执行语句体2

三目运算和if语句的第二种格式,高度相似,但并不是任何情况下都能相互替代(见代码)

        //只有一种情况我们的三目运算符无法替代if的第二种格式:        if(a > b) {            System.out.println(a);        } else {            System.out.println(b);        }​        // 当if语句的语句体是操作的时候,三目运算无法替代if语句的第二种格式        // d = a > b ? ( System.out.println(a)):System.out.println(b);

if语句的第三种格式

第三种格式: 针对多种条件,执行不同的代码(满足不同的条件就执行不同的代码)

         if语句第三种格式:          if(关系表达式1) {             语句体1;          }else if (关系表达式2) {             语句体2;           }            …            else {             语句体n+1;            }

执行流程

  • 首先判断关系表达式1看其结果是true还是false

    • 如果是true就执行语句体1

  • 如果是false就继续判断关系表达式2看其结果是true还是false

    • 如果是true就执行语句体2

  • 如果是false就继续判断关系表达式…看其结果是true还是false

  • 如果没有任何关系表达式为true,就执行语句体n+1

选择结构(switch语句)

switch语句格式

         switch语句格式:        switch(表达式) {        case 值1:                 语句体1;                 break;        case 值2:                语句体2;                break;            …            default:                     语句体n+1;                    break;

执行流程

首先 计算出表达式的值

其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。

最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

switch表示这是switch语句

  • 1.表达式的取值:byte, short, Int, char

    • DK5以后可以是:枚举

    • JDK7以后可以是:String

  • 2.case后面跟的是要和表达式进行比较的值

  • 3.语句体部分可以是一条或多条语句

  • 4.break表示中断,结束的意思,可以结束switch语句

  • 5.default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。

区别:

if(> < == !=)

switch(==)

case穿越

当表达式的值和某个case后所跟的值相当,在执行该case语句的语句体之后,继续依次执行在该case之后的语句体(不会再做比较)

注意事项

  • 1.case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的

  • 2.default可以省略吗?可以省略。一般不建议。除非判断的值是固定的。(单选题)

  • 3.break可以省略吗?可以省略,一般不建议。否则结果可能不是你想要的

  • 4.default的位置一定要在最后吗?可以出现在switch语句任意位置。

  • 5.switch语句的结束条件

    • 遇到break

    • 执行到程序的末尾

if语句使用场景:

  • 针对结果是boolean类型的判断

  • 针对一个范围的判断

  • 针对几个常量值的判断

switch语句使用场景:

  • 针对几个常量值的判断

循环结构

for循环结构的组成

  1. 初始化语句:一条或者多条语句,这些语句完成一些初始化操作。

  2. 判断条件语句:这是一个boolean ?表达式,这个表达式能决定是否执行循环体。关系表达式

  3. 循环体语句:这个部分是循环体语句,也就是我们要多次做的事情。

  4. 控制条件语句:这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。

for循环语句格式

    for(初始化语句(没有开始重复之前的状态);判断条件语句(指明终止条件);控制条件语句(记录重复的状态)) {            循环体语句;                注意事项:        1.判断条件语句的结果是一个boolean类型        2.循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。    }  
for(int i = 1; i <= 10; i++){}

这样定义for循环的控制变量,那么i的作用域,就是循环的{}之内,一旦出了循环,i变量的空间就会被jvm所回收(销毁)

while循环语句格式

基本格式
        while(判断条件语句) {        循环体语句;    }

实际使用的时候使用的都是扩展的while语句格式

扩展格式
           初始化语句;           while(判断条件语句) {                 循环体语句;                 控制条件语句;            }                        for(初始化语句;判断条件语句;控制条件语句)                    循环体语句;
场景区别:
  1. for循环适合针对一个范围判断进行操作(循环次数比较明确)

  2. while循环适合判断次数不明确操作

do…while循环语句格式:

基本格式

           do {                 循环体语句;           }while((判断条件语句);

扩展格式

           初始化语句;           do {                 循环体语句;                 控制条件语句;            } while(判断条件语句);​        // do while 和while唯一的区别就在于,do while无论如何都会执行一次循环体语句,但是对于while

对于三种循环的选择:写程序优先考虑for循环,再考虑while循环,最后考虑do···while循环。

两种常见的死循环

    while(true){}    for(;;){}​

跳转控制语句

Java提供了break,continue和return来实现控制语句的跳转和中断

  • break 中断

  • continue 继续

  • return 返回

跳转控制语句:终止循环(不依赖于循环的终止条件)

跳转控制语句(break)

执行break语句,终止循环(单层循环)

  • 1.在选择结构的switch语句中

  • 2.在循环语句

  • 3.离开使用场景的存在是没有意义的(不和if一起使用)

跳出单层循环(如果有多层循环,只跳出内层)

break和标签结合使用:

  • 带标签的跳出

  • 格式:标签名:循环语句

  • 标签名要符合Java的命名规则

跳转控制语句(continue)

continue的使用场景:
  • 在循环语句中

  • 离开使用场景的存在是没有意义的

continue的作用:
  1. 单层循环对比break,然后总结两个的区别

  • break 退出当前循环

  • continue 退出本次循环

    2.带标签的使用

  • continue + 标签(双重循环) <=> 终止单层循环的break

跳转控制语句(return)

关键字不是为了跳转出循环体,更常用的功能是结束一个方法(函数),也就是退出一个方法

return 如果放在循环中,直接终止最外层循环(连整个方法都终止了)

break和标签结合
        //break 和标签结合使用,可以达到终止n层循环                f:        for(int j = 1; j <= 3; j++) {            for(int i = 1; i <= 10; i++) {​                //离开使用场景的存在是没有意义的,一定要结合特定的使用场景,即满足特定条件,和if语句一起只用                if(i == 3)                    break f; //只结束了内层循环                System.out.println(i);            }        }        
continue和标签结合
        outer:        for (int j = 1; j <= 3; j++) {            for (int i = 1; i <= 3; i++) {​                //离开使用场景的存在是没有意义的,一定要结合特定的使用场景,即满足特定条件,和if语句一起只用                if (i == 2)                    continue outer; //只循环的一次执行,也就是说在本次执行过程如中                // continue之后的语句不会再被执行,直接开始下一次循环                System.out.print(i + " ");            }            System.out.println();        }
return作用

JavaBasic_04的更多相关文章

随机推荐

  1. Django之DjangoAdmin

    前言: 当我们启动1个Django程序的时候,在程序的settings.py配置文件默认注册了1个名为'django.contrib.admin'的APP程序,并且配置了默认路由映射关系url(r'^ ...

  2. ActiveMQ 消息的重新投递

    正常情况下:consumer 消费完消息后,会发送"标准确认"给 broker,这个确认对象以 MessageAck 类表征: // 省略其他代码.类中定义了各种确认的类型 pub ...

  3. Tomcat修改用户名密码教程

    Tomcat安装教程见http://www.cnblogs.com/lsdb/p/6497964.html 启动tomcat后访问http://127.0.0.1/:8080,出现界面如下其右上角有三 ...

  4. linux basic test

    Linux 1◆ 提供连接     2◆ connection baidu.com 3◆ vm tools install Reboot    

  5. day05 数据类型

    一.整形int 基本使用: 1,用途:记录年龄\等级\各种号码 2定义方式: age=18     age =int(18) x =int(‘123’)#只能将纯数字的字符串转换成整形 print(t ...

  6. Spring注入,Ioc的具体配置

    Spring框架的IOC注入: 一.Java部分代码: Person实体类: package com.ioc; import java.util.List; import java.util.Map; ...

  7. bzoj1239

    题解: 首先计算出两两之间的距离 然后二分答案 然后贪心判断是否可以放置少于等于k个 代码: #include<bits/stdc++.h> using namespace std; ; ...

  8. day042 前端CSS选择器

    今日内容: 高级选择器 1.子类选择器 用 > 表示 类比于相对路径 选择的是前一级标签的子标签 2后代选择器 用空格表示 选择的是前一级标签的后代标签 3并集选择器 用,逗号表示 选择的是用逗 ...

  9. Java:多个文档合并输出到一个文档

    多个文档合并输出到一个文档 方法:Java NIO package First; import java.io.File; import java.io.FileInputStream; import ...

  10. 协程(Coroutine)与多线程,多进程

    执行多个任务可以使用多线程或多进程. 多进程中,同一个变量,各自有一份拷贝存在于每个进程中,互不影响 多线程中,所有变量都由所有线程共享.而线程间的切换是系统进行调度,无法控制,所以可能 一个进程中的 ...