Java基础教程(6)-Java中的流程控制语句

简介: 【4月更文挑战第6天】Java流程控制包括选择(if, switch)、重复(while, do-while, for)和跳转(break, continue, return)语句。选择语句根据条件执行不同路径,if和switch用于单条件和多条件分支。重复语句用于循环,如for循环的初始化、条件和迭代部分,以及while和do-while循环。跳转语句中,break用于立即退出循环,continue结束当前循环迭代,return则从方法中返回。此外,Java的for each循环简化了数组或集合的遍历,但不能控制遍历顺序或索引。

Java中的流程控制语句

Java的程序控制语句分为以下几类:选择,重复和跳转。

  • 根据表达式结果或变量状态选择语句来使你的程序选择不同的执行路径。
  • 重复语句使程序能够重复执行一个或一个以上语句(也就是说,重复语句形成循环)。
  • 跳转语句允许你的程序以非线性的方式执行。

语句块:

语句块是由一对花括号{}括起来的若干条简单的java语句;块确定了变量的作用域,一个块可以包含在另一个块中;

不能再两个嵌套的块中声明同名的变量;

选择语句if和switch

Java支持两种选择语句:if语句和switch语句。这些语句允许你只有在程序运行时才能知道其状态的情况下,控制程序的执行过程。

if语句:

if语句是Java中的条件分支语句。它能将程序的执行路径分为两条。if语句的完整格式如下:

if (condition) statement1; 
else statement2;

其中,if和else的对象都是单个语句(statement),也可以是程序块。条件condition可以是任何返回布尔值的表达式。else子句是可选的。if语句的执行过程如下:

如果条件为真,就执行if的对象(statement1);
否则,执行else的对象(statement2)。
任何时候两条语句都不可能同时执行。

还可以用多个 if … else if … 串联;

它的语法如下:

if(condition) 
statement; 
else if(condition) 
statement; 
else if(condition) 
statement; 
. 
. 
. 
else 
statement;

条件表达式从上到下被求值。一旦找到为真的条件,就执行与它关联的语句,该阶梯的其他部分就被忽略了。如果所有的条件都不为真,则执行最后的else语句。

最后的else语句经常被作为默认的条件,即如果所有其他条件测试失败,就执行最后的else语句。如果没有最后的else语句,而且所有其他的条件都失败,那程序就不做任何动作。

public class DemoControl {
   

    public static void main(String[] args) {
   

        int a =1,b=2;
        if (a>b){
   
            System.out.println("a大于b");
        }else if (a==b){
   
            System.out.println("a等于b");
        }else {
   
            System.out.println("a小于b");
        }

    }

}
switch语句:

switch语句是Java的多路分支语句。它提供了一种基于一个表达式的值来使程序执行不同部分的简单方法。

switch 语句根据 switch (表达式) 计算的结果,跳转到匹配的 case 结果,然后继续执行后续语句,直到遇到 break 结束执行。
switch语句的通用形式如下:

switch (expression) {
    
case value1: 
// statement sequence 
break; 
case value2: 
// statement sequence 
break; 
. 
. 
. 
case valueN: 
// statement sequence 
break; 
default: 
// default statement sequence 
}

switch语句的执行过程如下:

表达式的值与每个case语句中的常量作比较。
如果发现了一个与之相匹配的,则执行该case语句后的代码。
如果没有一个case常量与表达式的值相匹配,则执行default语句
如果没有相匹配的case语句,也没有default语句,则什么也不执行。
在case语句序列中的break语句将引起程序流从整个switch语句退出。

public class DemoControl {
   

    public static void main(String[] args) {
   

        int a = 1,b = 2;
        switch (a+b){
   
            case 1:
                System.out.println("1");
                break;
            case 2:
                System.out.println("2");
                break;
            case 3:
                System.out.println("3");
                break;
            case 4:
                System.out.println(4);
                break;
            default:
                System.out.println("noting");

        }

    }

}

Java 7 中,switch 的参数可以是 String 类型了。到目前为止 switch 支持这样几种数据类型:byte 、short、int 、char 、String 。

循环语句

循环语句就是让计算机根据条件做循环计算,在条件满足时继续循环,条件不满足时退出循环。

Java的循环语句有for,while和 do-while。

while

while语句是Java最基本的循环语句。当它的控制表达式是真时,hile语句重复执行一个语句或语句块。它的通用格式如下:

while(condition) { 
// body of loop 
}

条件condition可以是任何布尔表达式。只要条件表达式为真,循环体就被执行。当条件condition为假时,程序控制就传递到循环后面紧跟的语句行。

do-while

为while语句在循环一开始就计算条件表达式,若开始时条件为假,则循环体一次也不会执行。
有时需要在开始时条件表达式即使是假的情况下,while循环至少也要执行一次。而不是在循环开始时。
Java就提供了这样的循环:do-while循环。do-while循环总是执行它的循环体至少一次,因为它的条件表达式在循环的结尾。它的通用格式如下:

do { 
// body of loop 
} while (condition)

do-while循环总是先执行循环体,然后再计算条件表达式。如果表达式为真,则循环继续。否则,循环结束。对所有的Java循环都一样,条件condition必须是一个布尔表达式。

for

for循环是一个功能强大且形式灵活的结构。下面是for循环的通用格式:

for(initialization; condition; iteration) {
    
// body 
}

for循环的执行过程如下。

  • 第一步,当循环启动时,先执行其初始化部分;初始化表达式仅被执行一次。
  • 下一步,计算条件condition的值。条件condition必须是布尔表达式。它通常将循环控制变量与目标值相比较。如果这个表达式为真,则执行循环体;如果为假,则循环终止。
  • 再下一步执行循环体的反复部分。这部分通常是增加或减少循环控制变量的一个表达式。
  • 接下来重复循环,首先计算条件表达式的值,然后执行循环体,接着执行反复表达式。
  • 这个过程不断重复直到控制表达式变为假。

Java允许你在for循环的初始化部分和反复部分声明多个变量,每个变量之间用逗号分开

在Java中可以使for循环的初始化、条件或者反复部分中的任何或者全部都为空

for( ; ; ) { 
 // ... 
} 
这个循环将始终运行,因为没有使它终止的条件。

Java还提供了另一种 for each 循环:

和 for 循环相比, for each 循环的变量n不再是计数器,而是直接对应到数组的每个元素。 foreach 循环的写法也更简洁。但是, for each 循环无法指定遍历顺序,也无法获取数组的索引

跳转语句

Java 支持 3 种跳转语句:break,continue和return。这些语句把控制转移到程序的其
他部分;

break

使用break语句直接强行退出循环,忽略循环体中的任何其他语句和循环的条件测试。在循环中遇到break语句时,循环被终止,程序控制在循环后面的语句重新开始。

break不是被设计来提供一种正常的循环终止的方法。循环的条件语句是专门用来终止循环的。只有在某类特殊的情况下,才用break语句来取消一个循环

continue

break 会跳出当前循环,也就是整个循环都不会执行了。而 continue 则是提前结束本次循环,直接继续执行下次循环。
在多层嵌套的循环中, continue 语句同样是结束本次自己所在的循环

return

return语句用来明确地从一个方法返回。也就是,return语句使程序控制返回到调用它的方法。

相关文章
|
3天前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
17 1
|
1月前
|
Java 开发者 UED
【实战宝典】Java异常处理大师级教程:throws关键字,让异常声明成为你的专属标签!
【实战宝典】Java异常处理大师级教程:throws关键字,让异常声明成为你的专属标签!
40 3
|
14天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
160 37
|
14天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
14天前
|
缓存 安全 Java
【Java面试题汇总】Java基础篇——基础、修饰符和关键字(2023版)
Java的特点和优点,、Java 8的新特性、面向对象、基本数据类型和引用类型、自动拆装箱与自动装箱、==与equals()的区别、为什么重写equals()就要重写hashcode()、抽象类和接口的区别、重载和重写的区别、四种引用方式、wt()和sleep()的区别、java方法是值传递还是引用传递?访问修饰符、static、final、this和super、volatile的用法及原理
【Java面试题汇总】Java基础篇——基础、修饰符和关键字(2023版)
|
9天前
|
Java API
Java时间戳教程
本文详细介绍Java中时间戳的处理方法,包括获取当前时间戳、使用`java.time`包、时间戳与日期的相互转换及格式化等。示例代码展示了如何利用`System.currentTimeMillis()`和`java.time.Instant`获取时间戳,以及如何通过`Date`和`ZonedDateTime`进行日期转换和时区处理。随着Java 8引入的`java.time`包,日期时间操作变得更加强大和便捷,推荐在新项目中优先采用。
|
1月前
|
Java 开发者
Java多线程教程:使用ReentrantLock实现高级锁功能
Java多线程教程:使用ReentrantLock实现高级锁功能
29 1
|
30天前
|
存储 安全 Java
java基础Java的Deque之Deque、BlockingDeque、LinkedBlockingDeque、ArrayDeque
在实际编程中,合理利用Java的Deque和它的具体实现,可以在不同的应用场景中发挥高效和线程安全的队列管理功能。通过了解和比较Deque的不同实现,可以根据应用需求做出适当的技术选型,以支持高效且健壮的应用架构。
14 0
|
30天前
|
Java API
Java与Lua互相调用简单教程
【8月更文挑战第29天】在软件开发中,Java以其强大的稳定性和广泛的生态系统著称,而Lua则因其轻量级、灵活和嵌入式的特点在脚本编写、游戏开发等领域大放异彩。将两者结合使用,可以充分利用Java的底层能力和Lua的快速开发优势。本文将通过一个简单的教程,介绍如何在Java程序中嵌入并执行Lua脚本,以及如何在Lua中调用Java方法。
25 0
|
3天前
|
存储 缓存 Java
java线程内存模型底层实现原理
java线程内存模型底层实现原理
java线程内存模型底层实现原理