【Java】03 流程控制语句
做任何事情都要遵循一定的原则。程序设计也是如此,需要利用流程控制实现与用户的交流,并根据用户的需求决定程序 “做件么” “怎么做”。
一、流程控制语句
1.1 程序结构
顺序结构 如果没有特别指明,程序就按照顺序一句一句顺序执行。
选择结构 按照条件执行相应的语句体,没有则不执行。
循环结构 循环执行某个语句体,直至不满足条件为止。
注意: ① 死循环:条件永远成立 ,循环永不结束。 ② 嵌套循环:循环内还有循环。
1.2 选择结构
1.2.1 if 语句
if 语句使用布尔表达式或布尔值作为分支条件来进行分支控制。
if
语法:
if ( 条件 ) {
// 条件成立,执行语句体
语句体;
}
示例:
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = 1;
if (a == b) {
System.out.println("a = b");
}
if (a == c) {
System.out.println("a = c");
}
if (b == c) {
System.out.println("b =c");
}
}
}
if ··· else
语法:
// if ··· else
if ( 条件 ) {
// 条件成立,执行语句体1
语句体1;
} else {
// 否则,执行语句体2
语句体2;
}
示例:
// if ··· else
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 2;
if (a == b) {
System.out.println("a = b");
}else {
System.out.println("a != b"); // a != b
}
}
}
注意: if ··· else 语句与三元运算符可以互转
if ··· else if
语法:
// if ··· else if
if ( 条件1 ) {
// 若条件1成立,执行语句体1
语句体1;
} else if ( 条件2 ) {
// 若条件2成立,执行语句体2
语句体2;
}
······
else if ( 条件n ) {
// 若条件n成立,执行语句体n
语句体;
} else { // 最后的 else 可以省略
// 否则,执行语句体f
语句体f;
}
示例:
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = 1;
int d = 1;
if (a == b) {
System.out.println("a = b");
} else if (a == c) {
System.out.println("a = c"); // a = c
} else if (a == d) {
System.out.println("a = d"); // 不执行
} else {
System.out.println("a != b && a != c && a != d");
}
}
}
注意: if ··· else if 语句当满足了某一个条件后不在判断是否满足其他条件
if、else、else if 后的条件执行体要么是一个花括号括起来的代码块,则这个代码块整体作为条件执行体;要么是以分号为结束符的一行语句,甚至可能是一个空语句(空语句是一个分号),那么就只是这条语句作为条件执行体。如果省略了 if 条件后条件执行体的花括号,那么 if 条件只控制到紧跟该条件语句的第一个分号处。
1.2.2 switch 语句
switch 语句由一个控制表达式和多个 case 标签组成,和 if 语句不同的是,switch 语句后面的控制表达式的数据类型只能是 byte、short、char、int 四种整数类型,枚举类型和 String 类型(Java 1.7),不能是 boolean 类型。
语法:
switch ( 条件 ) {
// 判断 条件 满足那个 case 则执行哪一个 case 中的语句
case 条件1 :{
语句1;
break;
}
case 条件2 :{
语句2;
break;
}
···
case 条件n :{
语句n;
break;
}
// 都不满足则执行 default 中的一句(可省略)
default :{
语句;
break;
}
}
示例:
public class Test {
public static void main(String[] args) {
int a = 1;
switch (a) {
case 1 : {
System.out.println("a = 1"); // a = 1
break;
}
case 2 : {
System.out.println("a = 2");
break;
}
default:{
System.out.println("没有满足的条件");
break;
}
}
}
}
注意: case 具有穿透性,所以 case 后必须跟 break 使其跳出 switch,否则将会不断执行下一个 case 直至遇到 break 或者执行完 switch。
1.3 循环结构
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体。当反复执行这个循环体时,需要在合适的时候把循环条件改为 false,从而结束循环,否则循环将一直执行下去,形成死循环。循环结构可能包含如下4个部分: ♞ 初始化语句:一条或多条语句,这些语句用于完成一些初始化工作,初始化语句在循环开始之前执行。 ♞ 循环条件:这是一个 boolean 表达式,这个表达式能决定是否执行循环体。 ♞ 循环体:这个部分是循环的主体,如果循环条件允许,这个代码块将被重复执行。如果这个代码块只有一行语句,则这个代码块的花括号是可以省略的。 ♞ 迭代语句:这个部分在一次循环体执行结束后,对循环条件求值之前执行,通常用于控制循环条件中的变量,使得循环在合适的时候结束。
1.3.1 while 循环
while 语句的循环方式是通过一个条件来控制是否要继续反复执行这个语句。
语法:
// 直到不满足条件退出循环
初始化表达式;
while ( 循环条件 ) {
语句体;
}
示例:
public class Test {
public static void main(String[] args) {
int i = 0;
while (i < 5) {
System.out.println(i); // 0 1 2 3 4
i++;
}
}
}
1.3.2 do ··· while 循环
do…while 循环语句与 while 循环语句类似,它们之间的区别是 while 语句先判断条件是否成立再执行循环体,而 do…while 循环语句则先执行一次循环后,再判断条件是否成立。也就是说 do…while 循环体至少要被执行一次。
语法:
// 首先执行一次循环体 再判断是否满足条件
初始化表达式;
do {
语句体1;
}while ( 循环条件 );
示例:
public class Test {
public static void main(String[] args) {
int i = 0;
do {
System.out.println(i); // 0
i++;
}while (i < 0);
}
}
1.3.3 for 循环
for 循环是更加简洁的循环语句,大部分情况下,for 循环可以代替 while 循环、do while 循环
语法:
// 不满足循环条件时退出循环
for ( 初始化表达式; 循环条件; 步进表达式 ) {
语句体;
}
示例:
public class Test {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println(i); // 0 1 2 3 4
}
}
}
break : 终止循环; continue:终止本次循环进入下一次循环 如果知道循环次数用 for,不知道循环次数用 while。
- 前11月网游收入1341亿元同比增超两成 你贡献了多少?
- struts2: config-browser-plugin 与 convention-plugin 学习
- 千万级规模高性能、高并发的网络架构经验分享
- UE4新手之编程指南
- redis 学习笔记(5)-Spring与Jedis的集成
- Linq to SQL 查询Tips
- SQLite 预写式日志
- java调用.net asmx / wcf
- mybatis3.2.8 与 hibernate4.3.6 混用
- mybatis的物理分页:mybatis-paginator
- 使用 WMI 进行诊断WCF
- java:快速文件分割及合并
- 暴涨210倍的一个数字货币正悄无声息崛起
- QT Creator 快速入门教程 读书笔记(一)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- JavaScript 技术篇-js获取document的几种方式,js获取dom元素的常用方法。
- 不好意思,我膨胀了!shader 入门精要!Cocos Creator 3D Shader !
- JavaScript 技术篇-js获取dom节点、html标签自定义属性的值。
- 测试 APP 抓不到数据包该怎么办
- 手把手教你搭建SSM框架(Eclipse版)
- 【手把手教你】使用pyfinance进行证券收益分析
- [English] Creating a New Theme
- 脏读,不可重复读,幻读
- 建议收藏!这份MySQL 连接查询超全详解送给你
- Redis点赞新思路 bitmap
- PyQt5 技术篇-调用字体对话框(QFontDialog)获取字体,控件设置字体。
- deepin使用
- 解决deepin下安装sqlite3依赖过新的问题
- PyQt5 技术篇-调用文件对话框获取文件、文件夹路径。文件对话框返回选中的多个文件路径
- deepin安装golang