Java学习笔记(二)--流程控制语句
java流程控制语句
1.语句编写方式
按照语句的组成部分,可以将顺序结构中的语句分为表达式语句、空语句和复合语句3大类。
在 Java 中,语句是最小的组成单位,每个语句必须使用分号作为结束符。
为了使程序语句排列得更加美观、容易阅读和排除错误,一般使用如下规则格式化源代码:
(1)在一行内只写一个语句,并采用空格、空行来保证语句容易阅读。
(2)在每个复合语句内使用 Tab 键向右缩进。
(3)大括号总是放在单独的一行,便于检查是否匹配。
空语句:空语句(Empty Statement),它在程序中什么都不做,也不包含具有实际性的语句。在程序中,空语句主要用来作为空循环体。
;// 其实就是一个分号
表达式语句:在很多的高级语言中,有专门的赋值语句。而在 Java 中将赋值作为一个运算符,因此只有赋值表达式。在赋值表达式后面添加分号就成了独立的语句。
一般表达式语句应该能完成一个操作,如修改变量的值或者作为函数参数等。具体方法是,在表达式的左侧指定一个变量来存储表达式的值,或者将表达式传递给函数。
复合语句:复合语句又称为语句块,是很多个语句的组合,从而可以将多个语句看作单个语句。
它的执行规则如下:
如果语句块是空的,控制转到语句块的结束点。
如果语句块不是空的,控制转到语句列表。当控制到达语句列表的结束点时,控制转到语句的结束点。
{ width = 10; // 为width变量赋值 height = 90; // 为height变量赋值 area = width * height; // 计算width变量和height变量的乘积 }
2.if--else语句
if 语句是使用最多的条件分支结构,它属于选择语句,也可以称为条件语句。
if 选择结构是根据条件判断之后再做处理的一种语法结构。默认情况下,if 语句控制着下方紧跟的一条语句的执行。
if (条件表达式) { 语句块; }
其中“条件表达式”和“语句块”是比较重要的两个地方。
1.条件表达式:条件表达式可以是任意一种逻辑表达式,最后返回的结果必须是一个布尔值。取值可以是一个单纯的布尔变量或常量,也可以是使用关系或布尔运算符的表达式。如果条件为真,那么执行语句块;如果条件为假,则语句块将被绕过而不被执行或者执行else语句。
2.语句块:该语句块可以是一条语句也可以是多条语句。如果仅有一条语句,可省略条件语句中的大括号 {}。当从编程规范角度不要省略大括号,省略大括号会使程序的可读性变差。
if…else 语句的语法格式如下所示:
if (表达式) { 语句块1; } else { 语句块2; }
上述语法格式中,如果 if 关键字后面的表达式成立,那么就执行语句块 1,否则的话则执行语句块 2。
多条件 if-else-if 语句
if…else if 多分支语句的语法格式如下所示:
if(表达式1) { 语句块1; } else if(表达式2) { 语句块2; ... } else if(表达式n) { 语句块n; } else { 语句块n+1; }
嵌套 if 的使用
可以在 if 语句里嵌套另一个 if 语句。
if(表达式1) { if(表达式2) { 语句块1; } else { 语句块2; } } else { if(表达式3) { 语句块3; } else if(表达式4) { 语句块4; } else { if(表达式n) { 语句块n; } else { 语句块n+1; } } }
3.switch语句
switch 语句是 Java 的多路分支语句。
switch 语句的基本语法形式如下所示:
switch(表达式) { case 值1: 语句块1; break; case 值2: 语句块2; break; … case 值n: 语句块n; break; default: 语句块n+1; break; }
其中,switch、case、default、break 都是 Java 的关键字。
1)switch
表示“开关”,这个开关就是 switch 关键字后面小括号里的值,小括号里要放一个整型变量或字符型变量。表达式必须为 byte,short,int,char类型。
Java7 增强了 switch 语句的功能,允许 switch 语句的控制表达式是 java.lang.String 类型的变量或表达式。只能是 java.lang.String 类型,不能是 StringBuffer 或 StringBuilder 这两种字符串的类型。
2)case
表示“情况,情形”,case 标签可以是:
类型为 char、byte、 short 或 int 的常量表达式。
枚举常量。
从 Java SE 7 开始, case 标签还可以是字符串字面量。
例如:
String input = ...; switch (input.toLowerCase()) { // toLowerCase用于将大写字符转换为小写 case "yes": ... break; }
3)default
表示“默认”,即其他情况都不满足。default 后要紧跟冒号,default 块和 case 块的先后顺序可以变动,不会影响程序执行结果。通常,default 块放在末尾,也可以省略不写。
4)break
表示“停止”,即跳出当前结构。
在 case 分支语句的末尾没有 break 语句,有可能触发多个 case 分支。那么就会接着执行下一个 case 分支语句。
嵌套 switch 语句
可以将一个 switch 语句作为一个外部 switch 语句的语句序列的一部分,这称为嵌套 switch 语句。因为一个 switch 语句定义了自己的块,外部 switch 语句和内部 switch 语句的 case 常量不会产生冲突。
例如:
public static void main(String[] args) { switch (count) { case 1: switch (target) { case 0: System.out.println("target is zero"); break; case 1: System.out.println("target is one"); break; } break; case 2: // ... } }
4.while和do while
循环是程序中的重要流程结构之一。循环语句能够使程序代码重复执行,适用于需要重复一段代码直到满足特定条件为止的情况。
Java 中采用的循环语句与C语言中的循环语句相似,主要有 while、do-while 和 for。
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体。当反复执行这个循环体时,需要在合适的时候把循环条件改为假,从而结束循环,否则循环将一直执行下去,形成死循环。
while 语句
while 语句是 Java 最基本的循环语句,是一种先判断的循环结构,可以在一定条件下重复执行一段代码。
语法结构如下:
while(条件表达式) { 语句块; }
其中语句块中的代码可以是一条或者多条语句,而条件表达式是一个有效的 boolean 表达式,它决定了是否执行循环体。当条件表达式的值为 true 时,就执行大括号中的语句块。
do-while 语句
do-while 循环语句的特点是先执行循环体,然后判断循环条件是否成立。
语法格式如下:
do { 语句块; }while(条件表达式);
语句的执行过程是,首先执行一次循环操作,然后再判断 while 后面的条件表达式是否为 true,如果循环条件满足,循环继续执行,否则退出循环。while 语句后必须以分号表示循环结束。
5.for循环
for 语句是应用最广泛、功能最强的一种循环语句。大部分情况下,for 循环可以代替 while 循环、do while 循环。
for 语句通常使用在知道循环次数的循环中。
for 语句语法格式如下:
for(条件表达式1;条件表达式2;条件表达式3) { 语句块; }
条件表达式 1:为赋值语句,循环结构的初始部分,为循环变量赋初值如:int i=1
条件表达式 2:为条件语句,循环结构的循环条件 如:i>40
条件表达式 3:迭代语句,通常使用,++ 或 -- 运算符,循环结构的迭代部分,通常用来修改循环变量的值如:i++
for 语句中初始化、循环条件以及迭代部分都可以为空语句(但分号不能省略),三者均为空的时候,相当于一个无限循环。
for、do-while 和 while 的区别:
循环嵌套:把一个循环放在另一个循环体内,那么就可以形成嵌套循环。
嵌套循环既可以是 for循环嵌套 while 循环,也可以是 while 循环嵌套 do-while 循环 …… 即各种类型的循环都可以作为外层循环,也可以作为内层循环。
当程序遇到嵌套循环时,如果外层循环的循环条件允许,则开始执行外层循环的循环体,当内层循环执行结束,且外层循环的循环体执行结束时,则再次计算外层循环的循环条件,决定是否再次开始执行外层循环的循环体。
6.foreach语句的用法
foreach 循环语句是 Java 1.5 的新特征之一,在遍历数组、集合方面,foreach 为开发者提供了极大的方便。foreach 循环语句是 for 语句的特殊简化版本,主要用于执行遍历功能的循环。
foreach 循环语句的语法格式如下:
for(类型 变量名:集合) { 语句块; }
“类型”为集合元素的类型,“变量名”表示集合中的每一个元素,“集合”是被遍历的集合对象或数组。每执行一次循环语句,循环变量就读取集合中的一个元素。
foreach 循环和普通循环不同的是,它无须循环条件,无须循环迭代语句,这些部分都由系统来完成,foreach 循环自动迭代数组的每个元素,当每个元素都被迭代一次后,foreach 循环自动结束。
7.return语句
return 关键字并不是专门用于结束循环的,return 语句用于终止函数的执行或退出类的方法,并把控制权返回该方法的调用者。如果这个方法带有返回类型,return 语句就必须返回这个类型的值;如果这个方法没有返回值,可以使用没有表达式的 return 语句。
语法格式如下:
return 与方法相同类型的变量;
8.break语句:跳出循环
break 用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到 break,系统将完全结束该循环,开始执行循环之后的代码。
break 语句有 3 种作用,分别是:在 switch 语句中终止一个语句序列、使用 break 语句直接强行退出循环和使用 break 语句实现 goto 的功能。
一个循环中可以有一个以上的 break 语句,但是过多的 break 语句会破坏代码结构。switch 循环语句中的 break 仅影响 switch 语句,不会影响循环。
9.continue语句详解
continue 语句是跳过循环体中剩余的语句而强制执行下一次循环,其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。
continue 语句类似于 break 语句,但它只能出现在循环体中。它与 break 语句的区别在于:continue 并不是中断循环语句,而是中止当前迭代的循环,进入下一次的迭代。简单来讲,continue 是忽略循环语句的当次循环。
break、continue 和 return控制程序的循环结构,作用如下:
break:表示跳出当前层循环
continue:表示跳出本次循环,进入下一次循环
return:跳出当前方法的循环