热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Java基本语法程序流程控制

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java基本语法--程序流程控制相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java基本语法--程序流程控制相关的知识,希望对你有一定的参考价值。




流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构、分支结构、循环结构。本篇博客主要是对Java基本语法中的程序流程控制进行详细讲解...

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构、分支结构、循环结构。本篇博客主要是对Java基本语法中的程序流程控制进行详细讲解。



目录:



  • 顺序结构

    程序从上到下逐行地执行,中间没有任何判断和跳转



  • 分支结构

    根据条件,选择性地执行某段代码



    • if-else分支语句



    • switch-case分支语句





  • 循环结构

    根据循环条件,重复性的执行某段代码



    • for循环语句



    • while循环语句



    • do....while循环语句





  • 其他内容



    • 死循环&嵌套的应用

    • break&continue关键字

    • 附加说明



♫♬:JDK1.5提供了foreach循环,方便的遍历集合、数组元素




顺序结构
Java中定义成员变量时采用合法的前向引用

顺序结构

/*正确方式,在代码块内顺序执行*/
public class Demo11{
int number1 = 10;
int number2 = 12;
int number3 = number1 + number2;
System.out.println(number3);
}
/*错误
class Demo2{
int num1 = 10;
int num3 = num1 + num2;
int num2 = 12;
System.out.println(num3);
}
*/



分支结构

if-else分支语句

if 语句三种格式:

if(条件表达式){
执行代码块;
}

if(条件表达式){
执行代码块1;
}esle{
执行代码块2;
}

if(条件表达式1){
执行代码块1;
}else if(条件表达式2){
执行代码块2;
}
......
else{
执行代码块n;
}

if-else使用说明:

⚘ 条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量

⚘ 语句块只有一条执行语句时,一对{}可以省略,但建议保留

⚘ if-else语句结构,根据需要可以嵌套使用

⚘ 当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略

⚘ 当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓;当多个条件是“包含”关系时,“小上大下 / 子上父下”

✒ 分支结构最终返回的是一个值

练习:

判断成绩:
0<=score<60:不及格;
60<=score<70:及格;
70<=score<80:良好;
80<=score<100:优秀;

public class scoreDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩(百分制整数):");
int score = sc.nextInt();
// 多选一
if(score >= 0 && score <60) {
System.out.println("成绩不及格");
}else if(score >= 60 && score <70) {
System.out.println("成绩及格");
}else if(score >= 70 && score <80) {
System.out.println("成绩良好");
}else if(score >= 80 && score <= 100) {
System.out.println("成绩优秀");
}else {
System.out.println("请输入正确的百分制分数");
}
//嵌套使用
if(score <= 100){
if(score <= 80) {
if(score <= 70) {
if(score <= 60) {
System.out.println("成绩不及格");
}else {
System.out.println("成绩及格");
}
}else {
System.out.println("成绩良好");
}
}else {
System.out.println("成绩优秀");
}
}
}
}

switch-case分支语句

switch-cas结构:

switch(表达式){
case 常量1:
执行语句1
//breark;
case 常量2:
执行语句2
//breark;
......
case 常量n:
执行语句n
//breark;
default:
执行语句;
//break;
}

switch-case使用说明:

⚘ witch(表达式)中表达式的值 必须是下述几种类型之一:byte ,short,char,int,枚举 (jdk 5.0),String (jdk 7.0)

⚘ case子句中的值必须是常量,不能是变量名或不确定的表达式值

⚘ 同一个switch语句,所有case子句中的常量值互不相同

⚘ break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾,根据实际情况选择加不加

⚘ default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default,相当于if-else中末尾的else

练习:

判断成绩:

public class switchScoreDemo {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩(百分制):");
int score = sc.nextInt();
switch (score / 10) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("成绩不及格");
break;
case 6:
System.out.println("成绩及格");
break;
case 7:
System.out.println("成绩良好");
break;
case 8:
case 9:
case 10:
if(score==100){
System.out.println("成绩优秀");
break;
}
default:
System.out.println("请输入正确的百分制整数");
break;
}
}
}



循环结构
**循环语句的四个组成部分:**

☯ 初始化部分(init_statement)

☯ 循环条件部分(test_exp)

☯ 循环体部分(body_statement)

☯ 迭代部分(alter_statement)



for循环语句

for循环语法格式:

for(➊初始化部分;➋循环条件部分;➍迭代部分){
➌循环体部分;
}
//执行过程➊-➋-➌-➍-➋-➌-➍-...-条件不满足/break跳出

for循环使用说明:

⚘ ②循环条件部分为boolean类型表达式,当值为false时,退出循环

⚘ ①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔

⚘ ④可以有多个变量更新,用逗号分隔

⚘ for循环可以进行多重嵌套

⚘ 使用break可以跳出循环(for,while,do-while)

⚘ ①可以在for循环外定义,④可以在③中定义,但是②循环条件必须在for()中声明,需要注意的是①定义在for()中,其作用域就在for(){}内

练习:

1、输出abcbcbc

2、输出9*9乘法表

public class forDemo {
public static void main(String args[]) {
//输出abcbcbc方法一
int n = 1;
for(System.out.print("a");n<=3;System.out.print(\'c\'),n++) {
System.out.print(\'b\');
}
System.out.println( );

//输出abcbcbc方法二
int m = 1;
System.out.print(\'a\');
for(;m<=3;) {
m++;
System.out.print("bc");
}
System.out.println("");

//9*9乘法表
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= i; j++) {
System.out.print(i + "*" + j + "=" + (i*j)+" ");
}
System.out.println();
}
}
}

展示效果:



while循环语句

while循环语法格式:

➊初始化部分
while(➋循环条件部分){
➌循环体部分;
➍迭代部分;
}
//执行过程➊-➋-➌-➍-➋-➌-➍-...-条件不满足/break跳出

while循环使用说明:

⚘ 注意不要忘记声明④迭代部分。否则,循环将不能结束,变成死循环

⚘ for循环和while循环,do...while循环可以相互转换

练习:

输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数
字立方和等于其本身。

例如: 153 = 1*1*1 + 3*3*3 + 5*5*5

public class whileDemo {
public static void main(String args[]) {
System.out.println("水仙花数:");
int i = 100;
while(i <1000) {
int hundred = i / 100;
int decade = i % 100 /10;
int bits = i % 10;
int num = hundred * hundred * hundred + decade * decade * decade + bits * bits * bits;
if(i == num) {
System.out.println(i);
}
i++;
}
}
}

do...while循环语句

➊初始化部分
do{
➌循环体部分;
➍迭代部分;
}while(➋循环条件部分);
//执行过程➊-➌-➍-➋-➌-➍-...-条件不满足/break跳出

do...while循环使用说明:

⚘ while循环和do...while循环用法一致,不同的是do...while至少执行一次

练习:

输出0123456789字符串

public class doWhileDemo {
public static void main(String args[]) {
int i = 0;
String s = "";
do{
s += i;
i++;
}while(i <= 9);
}
}

其他内容

无限循环&嵌套的应用



  • “无限循环”

    //格式
    for(;;){
    执行语句;
    //在某种条件下break跳出循环
    }
    while(true){
    执行语句;
    //在某种条件下breaK跳出循环
    }
    do{
    执行语句;
    //在某种条件下break跳出循环
    }while(true);

    ⚘ 无限循环存在的原因是并不
    知道循环多少次,需要根据循环体内部某些条件来控制循环的结束



  • 嵌套

    ⚘ 分支语句,循环语句都可以相互嵌套,但是最好不要超过三层

    ⚘ 将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环或内层循环。

    ⚘ 实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始外层循环的下一次的循环

    ⚘ 设外层循环次数为m次,内层为n次,外层循环执行一次内层循环执行n次,总的内层循环体实际上需要执行m*n次




break&continue关键字



  • break关键字

⚘ break语句用于终止某个语句块的执行

⚘ break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是
哪一层语句块

public class Demo {
public static void main(String args[]) {
//9*9乘法表
for(int i = 1; i <= 9; i++){
for(int j = 1; j <= i; j++){
System.out.print(i + "*" + j + "=" + (i*j)+" ");
}
System.out.println();
}
// 当i=6时直接break
System.out.println("直接break");
for(int i = 1; i <= 9; i++){
for(int j = 1; j <= i; j++){
if(j == 6) {
break;
}
System.out.print(i + "*" + j + "=" + (i*j)+" ");
}
System.out.println();
}

System.out.println("break la2");
System.out.println("break la2");
la1: for(int i = 1; i <= 9; i++){
la2:for(int j = 1; j <= i; j++){
if(j == 6) {
break la2;
}
System.out.print(i + "*" + j + "=" + (i*j)+" ");
}
System.out.println();
}

System.out.println("break la1");
la1: for(int i = 1; i <= 9; i++) {
la2: for(int j = 1; j <= i; j++){
if(j == 6) {
break la1;
}
System.out.print(i + "*" + j + "=" + (i*j)+" ");
}
System.out.println();
}

System.out.println();
System.out.println("continue la2");
la1: for(int i = 1; i <= 9; i++) {
la2: for(int j = 1; j <= i; j++){
if(j == 6) {
continue la2;
}
System.out.print(i + "*" + j + "=" + (i*j)+" ");
}
System.out.println();
}
}
}

展示效果:






  • continue关键字

⚘ continue只能使用在循环结构中

⚘ continue语句用于跳过其所在循环语句块的一 一 次执行,继续下一次循环

⚘ continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环,同break的用法类型


附加说明

⚘ eturn:并非专门用于结束循环的,它的功能是结束一个方法。当一个方法执行到一个return语句时,这个方法将被结束

⚘ 与break和continue不同的是,return直接结束整个方法,不管这个return处于多少层循环之内

⚘ break只能用于switch语句和循环语句中

⚘ continue 只能用于循环语句中

⚘ break和continue二者功能类似,但continue是终止本次循环,break是终止本层循环

⚘ break、continue之后不能有其他的语句,因为程序永远不会执行其后的语句

⚘ 标号语句必须紧接在循环的头部。标号语句不能用在非循环语句的前面

⚘ 很多语言都有goto语句,goto语句可以随意将控制转移到程序中的任意一条
语句上,然后执行它。但使程序容易出错。Java中的break和continue是不同于goto的



本博客与CSDN博客༺ཌ༈君☠纤༈ད༻同步发布



推荐阅读
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • java文本编辑器,java文本编辑器设计思路
    java文本编辑器,java文本编辑器设计思路 ... [详细]
  • C++基础 | 从C到C++快速过渡
    一、开发环境c++使用的编译器是g& ... [详细]
  • switch分支结构一、程序运行流程的分类1、顺序结构:根据程序顺序依次执行。2、分支结构:根据判断决定程序的执行顺序。3、循环结构。分支结构三要素&# ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文探讨了如何使用pg-promise库在PostgreSQL中高效地批量插入多条记录,包括通过事务和单一查询两种方法。 ... [详细]
  • 本文小编为大家详细介绍“Java中的逻辑结构模式有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java中的逻辑结构模式有哪些”文章能帮 ... [详细]
  • 那你就是学的c语言,跟我学c语言
    本文目录一览:1、如何学习C语言?2、新手如何 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 六、流程控制语句
    选择结构if只有条件判断结果为真时才执行相应的操作循环结构for、whileuntil反复执行相同操作时,使用循环结构分支结构case根据变量值的匹配结果执行相 ... [详细]
author-avatar
手机用户2502862581
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有