Java温习——流程语句

一、顺序结构

若代码里没有流程控制,程序是按照书写格式从上到下依次运行;

一条语句执行结束后继续执行下一条语句,中间没有判断和跳转,直到程序的结束;




二、选择结构(又分支语句)

1 if语句

(1)if 结构

语法格式如下:

if(<boolean类型表达式>){
	<条件执行体> // 当boolean类型表达式结果为true,执行花括号中的代码
}

注:

在if(<boolean类型表达式>)后面,{}前面,没有分号;

若if语句只控制一条语句,则可不使用花括号,但企业规范中要求在任何情形下都使用花括号

操作boolean类型变量时,直接或加上取反运算符作为boolean类型表达式——更专业;


(2)if-else 结构

语法格式如下:

if(<boolean类型表达式>){
	<条件执行体A> // 当boolean类型表达式结果为true,执行该代码块
}else{
	<条件执行体B> // 否则,执行该代码块
}

注:

和三元运算符相比,if-else是语句结构,三元运算符是运算符;

三元运算符必须有一个结果,即必须有返回值;

if-else不能返回结果,只能控制语句的结构;


(3)if-else if-else 结构

语法结构如下:

if(<boolean类型表达式A>){
	<条件执行体A>
}else if(<boolean类型表达式B>){
	<条件执行体B>	
}else{
	<条件执行体C>
}


注:

带着问题去学习;


2 switch语句

语法结构如下:

switch(<整型表达式>){
	case <A值>:
		<条件执行体A> // 整型表达式结果等于A时,执行该代码块
		break; // 表示结束该switch语句,否则会顺序执行后面的语句
	case <B值>:
		<条件执行体B>
		break;
	case <C值>:
		<条件执行体C>
		break;
	default: // 以上值都不满足,执行该代码块
		<条件执行体D>
		break; // 一般不写
}

注:

switch语句适用于对多个整型值进行匹配判断,实现条件的分支控制;

和if语句不同,if语句根据boolean类型表达式判断,switch语句只是做“表达式 == 数值”的boolean表达式判断;(if语句更强大,switch语句仅判断整数

case后的表达式结果必须是常量;

case用于为switch选择一个执行代码的入口,一旦进入某一入口,后面的case实际上已失去判断意义,即忽略后面的case,会一直执行下去,直到遇到break或return,因此每个case后没有花括号;

switch语句支持的基本数据类型有byte、short、char、int,没有long;支持的引用类型是上述4个基本数据类型的包装类,依次是Byte、Short、Character、Integer,以及从Java5开始支持的枚举和从Java7开始支持的String类;

本质上,switch语句仅支持int类型,而byte、char、short类型自动转换为int类型;




三、循环语句

1 while循环

语法格式如下:

while(<boolean表达式>){
	<循环体>
}
先判断boolean类型表达式,若为true则执行循环体,否则跳过循环体,结束循环;


2 do while循环

语法格式如下:

do{
	<循环体>
}while(<boolean类型表达式>);
先执行一次循环体,再判断boolean类型表达式,若为true,则继续执行循环体,否则结束循环;
循环体至少执行一次;


3 for循环

语法格式:

for(<初始化语句>;<boolean类型表达式>;<循环后操作语句>){
	<循环体>
}
初始化语句——对循环初始化,只在循环开始时执行一次;

boolean表达式——若为false,则中止循环;

循环后操作语句——每次循环迭代后调用该语句,一般该语句是递增或递减;



4 死循环和三种循环语句对比

(1)死循环

// while死循环
while(true){
	<循环体>
}

// do while死循环
do{
	<循环体>
}while(true);

// for死循环
for(;;){
	<循环体>
}

(2)三种循环语句对比

三种循环语句是可以互换的;

一般,要指定次数(事先知道循环次数)时,建议使用for循环;

一般,循环语句中的循环迭代变量起名为i、j、k、m、n;

若变量定义在for循环里,当for循环结束时会释放该变量的存储空间,因此性能较高;


5 嵌套循环

(1)概念

若一个重复的操作需要执行N次,此时使用嵌套循环;

可把内循环看成一个整体;

若外循环的循环次数是m次,内循环的循环次数是n次,则内层循环中的语句循环次数是m*n次;


注:

使用嵌套循环时,内层循环结合外层循环的循环控制变量不能相同;

循环嵌套结构的书写最好采用“右缩进”格式,以体现循环层次的关系;

尽量避免太多和太深的循环嵌套结构;


(2)嵌套循环性能优化案例

循环次数少的放在外面,循环次数多的放在里面,可最大程度地减少相关循环变量的实例化(声明)次数、初始化次数等;(循环变量的操作包括实例化、初始化、比较、自增/减等)

将循环变量的实例化放在循环体外,进一步减少实例化次数;

具体地,见例子




四、控制循环结构语句

1 break语句

表示终止循环;


2 continue语句

表示跳过当前循环,直接进入下一次循环;


3 return语句

表示结束return所在方法;


注:

break、continue、return所在代码块中,其后面的语句永远无法执行,因此不能在其后编写任何代码,否则编译出错;


4 控制外层循环

(1)使用标签

标签是为某个循环起的别名,也得遵循标识符的规则;

若要控制外循环,直接在break或continue后接循环的别名;

语法格式如下:

break <OuterLoopAlias>;


(2)使用boolean类型变量

在内循环中控制该变量的值,在外循环条件判断时还要判断该变量的值是否符合要求,以此控制外循环;


例如,输出九九乘法表的前四行(注意使用外层循环的控制);

方法1:使用标签控制外循环

class OuterLoopAlias 
{
	public static void main(String[] args) 
	{
		outerAlias:
		for(int i = 1; i  < 10; i ++){
			for(int j = 1; j < i + 1; j ++){
				if(i == 5){ // 输出九九乘法表的前4行
					break outerAlias; 
				}
				System.out.print(j + "*" + i + "=" + i*j + "\t");
			}
			System.out.println();
		}
	}
}

方法2:在外层循环条件判断中添加一个boolean类型变量

class OuterLoopAlias 
{
	public static void main(String[] args) 
	{
		boolean flag = false; // 用于控制外循环的变量
		for(int i = 1; i  < 10 && !flag; i ++){ // 若flag为true,即当前i值为5,跳出外循环
			for(int j = 1; j < i + 1; j ++){
				if(i+1 == 5){ 
					flag = true; 
				}
				System.out.print(j + "*" + i + "=" + i*j + "\t");
			}
			System.out.println();
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值