Java流程控制03——顺序结构
顺序结构定义:
Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。
顺序结构式最简单的算法结构:
由上到下,逐句执行
语句与语句之间,框与框之间是按从上到下的顺序执行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构
实操:
public class 顺序结构实操{
public static void main(String[] args){
/*
顺序结构:顾名思义代码由上到下,逐句执行
如:
--输入的顺序依次是:
System.out.println("hello");
System.out.println("word");
System.out.println("!");
System.out.println("hello_word!");
--那么打印的顺序也一定是:
hello
word
!
hello_word!
*/
System.out.println("hello");
System.out.println("word");
System.out.println("!");
System.out.println("hello_word!");
}
}
在IDEA上实操及注意事项:
注意事项:
执行顺序是明确的,自上而下的:
代码的执行顺序严格按照其在源文件中出现的物理顺序进行,从上到下,一行接着一行。
且必须确保变量**先被声明和赋值,然后再被使用**。逻辑上后续的步骤必须写在后面
/* 正常顺序: 先定义变量名和变量值 在使用 */ String name = "xiao_ming"; //先定义变量及变量值 System.out.println("hello:"+ name); //在使用变量:最后的打印结果为:hello_xiao_ming /* 错误顺序: 先使用一个未被定义的变量名 再定义变量名和变量值 */ System.out.println("hello:"+name); //使用的变量名在被定义的变量名前面 String name = "xiao_Ming";//到这一步,程序崩溃,错误
-
每一步都会执行且执行一次:
在顺序结构中,不存在跳过某行代码或重复执行某行代码的情况(除非遇到错误中断)
与其他结构相比:
- 选择结构(if):可能跳过某些代码块
- 循环结构(for/whlie):会重复执行某些代码块
- 顺序结构:每行代码都必定会执行一次
逻辑的正确性完全依赖于语句的顺序:
这是顺序结构最需要警惕的地方。错误的语句顺序会导致程序逻辑错误,但程序本身可能不会报错,从而更难发现。
典型例子:交换两个变量的值——意思是变量名不变,交换对应的值
public class 例子交换两个变量的值{ public static void main(String[] args){ //先定义变量名与变量值 int a = 5; int b = 10; System.out.println("交换前:a = "+ a +",b = "+ b); //错误交换1: a = b; //先把b的值(10)赋给了a,现在a的值也变成了10,即a = 10 b = a;//再把当前a的值(10)赋给了b,现在b的值也就变成了10,即 b = 10 System.out.println("错误交换后:a = "+ a+",b = "+ b); //最后的结果a = 10,b = 10,交换失败。 //先重置变量 a = 5; b = 10; //错误交换2: b = a;//相反,先把a的值(5)赋给了b,现在b的值变成了5,即b = 5 a = b;//再把当前b的值(5)赋给了a,现在a的值也就变成了5,即a = 5 System.out.println("错误交换后:a = "+ a+",b = "+ b);//最后的结果b = 5,a = 5,交换失败。 //先重置变量 a = 5; b = 10; //正确交换:引入临时变量,并按正确顺序赋值 int temp = a; //将a的原始值(5)备份到临时变量temp中 a = b; //将b的值(10)赋给a,则现实中a的值为10 b = temp;//将临时变量中备份的a的原始值(5)赋给b System.out.println("正确交换后:a = "+ b+",b = "+ a);//最后的结果a=10,b=5,交换成功 } }
里面的临时变量名temp可以更改为任意变量名
它的作用只是作为一个中间人,将a的原始值保存
它的生命周期再main方法内都有效,可以随时拿来用
最后总结:
顺序结构 (Sequence Structure) 核心要点
主题 | 核心要点 | 说明与示例 |
---|---|---|
基本定义 | 程序的基础控制流 | 代码按照语句出现的先后顺序依次执行,不发生跳转。 |
执行方式 | 自上而下 | 执行顺序严格遵循代码的物理书写顺序,一条接一条。 |
执行特性 | 无跳转、无重复 | 每条语句都会执行且只执行一次(在没有错误的情况下)。 |
关键注意点 | 变量生命周期 | 变量必须先声明、初始化,然后再使用,否则会导致编译错误。 |
关键注意点 | 逻辑依赖顺序 | 顺序错误会导致逻辑错误(程序能运行,但结果错误)。 |
关键注意点 | 状态传递 | 后续语句的执行依赖于前面语句改变后的变量状态或创建的对象。 |
常见错误 | 未定义先使用 | System.out.println(x); int x = 10; → 编译错误 |
常见错误 | 错误交换值 | a = b; b = a; → 逻辑错误 (未能实现交换) |
正确实践 | 使用临时变量 | temp = a; a = b; b = temp; → 正确实现值交换 |
优点 | 清晰直观 | 逻辑流简单,易于理解和调试。 |
局限 | 功能有限 | 无法直接实现判断或循环,需与分支、循环结构结合使用。 |
最佳实践 | 规划步骤 | 编码前先理清逻辑步骤和数据依赖关系。 |
最佳实践 | 模拟调试 | 使用调试器或脑海模拟执行过程,验证每一步结果。 |