java学习笔记《java面向对象编程》——流程控制

一、分支语句

(1)if···else语句

if后面的表达式必须是布尔表达式,而不能是数字类型,这一点与C/C++语言不同。好的串联编程风格,程序代码的结构会比较清晰,并且运行效率也比较高。

在if···else语句上面,一种比较好的风格是,每个if语句后面的布尔表达式设置得当,使得后面的语句只处理一种情况,不要因为布尔表达式设置不当,使得if后面的语句包含了多种情况。

(2)switch语句

A、在switch(expr)语句中,expr表达式的类型必须是与int类型兼容的基本类型,所谓与int类型兼容,就是指能自动转换为int类型。因此expr表达式的合法类型包括byte、short、char和int类型。long和浮点类型不能自动转换为int类型,因此不能作为expr表达式的类型。

B、在case(value)子句中,value的类型必须是与int类型的基本类型,包括:byte、short、char和int类型。value必须是常量。各个value表达式的值必须不同。

C、在switch语句中最多只能有一个default子句。default子句是可选的。当switch表达式的值不与任何case语句匹配时,程序执行default子句,假如没有default语句,则程序直接退出switch语句。default子句可以位于switch语句中的任何位置,通常将default语句放在所有case语句的后面。

D、如果switch表达式与某个case表达式匹配,或者与default情况匹配,就从这个case语句或default语句开始执行。假如遇到break语句,就退出整个switch语句,否则依次执行switch语句中后续的case语句,不在检查case表达式的值。在一般情况下,应该在每个case语句的末尾提供break语句,以便及时退出整个switch语句。如果default语句不在最后,那么default语句后面也要加上break,反而是最后的case语句不需要加break语句了(正常情况下,default语句在末尾,default语句最后不需要加上break)。

假如若干case表达式都对应相同的流程分支,则不必使用break语句。比如:case ‘B’: case‘C’: case‘D’: *********; break; 这种情况是因为B、C、D都要采取同样地措施,执行同样地语句,所以B、C语句上故意不加break。

F、switch语句的功能也可以用if···else语句来实现,对于那些条件表达式的类型与int类型不兼容的情况,就应该用if···else语句代替。

二、循环语句

Java语言提供3种循环语句:for语句、while语句和do···while语句。for和while语句在执行循环体之前测试循环条件,而do···while语句在执行完循环体之后测试循环条件。。这意味着for和while语句有可能连一次循环体都未执行,而do···while循环至少执行一次循环体。

for语句:

for(初始化部分;循环条件;迭代部分){

          循环体

}

在执行for语句时,先执行初始化部分,这部分只会被执行一次,接下来计算作为循环条件的布尔表达式,如果为true,就执行循环体,接着执行迭代部分,然后再计算作为循环条件的布尔表达式,如此反复。

在使用for语句时,有以下注意事项。

(1)在初始化部分和迭代部分可以使用逗号语句。逗号语句时用逗号分隔的语句序列。

(2)for语句的初始化部分、循环条件或者迭代部分都可以为空。

	int n=1;
	boolean done=false;//初始化部分
	for(;!done;){
		System.out.println("tick"+n);
		if(n==10) done=true;
		n++;//迭代部分
	}
以上代码中,初始化部分被移到for语句以外,迭代部分被移到for循环体内。在这个简单的例子中,这种编程风格不值得推荐,因为它使程序的结构变得臃肿复杂。但在某些情况下,当初始化部分包括复杂的流程,并且循环控制变量的改变由循环体内的复杂行为来决定时,可以使用这种编程风格。

上面的for循环,就等价于while(!done){...}。

如果for语句的初始化部分、循环条件和迭代部分全为空,表示一个无限循环。如果要终止循环,需要break语句跳出来。

三、流程跳转语句

break、continue和return语句来控制流程的跳转。

(1)break:从switch语句、循环语句或标号标识的代码块中退出。

(2)continue:跳过本次循环,执行下一次循环,或执行标号标识的循环体

(3)return语句:退出本方法,跳到上层调用方法。如果本方法的返回类型不是void,就需要提供相应的返回值。

break语句和continue语句可以与标号联合使用。标号用来标识程序中的语句,标号的名字可以是任意的合法标识符。

在使用标号时,有以下注意事项。

A:在语法上,标号可以用来标识除变量声明语句之外的任何有效语句。为了简化程序的结构,目前的java语言不支持goto语句,在其他编程语言中,goto语句用于直接跳转到标号所在的语句,所以java中在普通语句前面的语句没有任何意义,目前只有在循环语句或分支语句的switch语句前面的标号才有实际意义。

B:continue语句中的标号必须定义在循环语句前面。

C:break语句中的标号必须定义在循环语句或switch语句前面。

你可能感兴趣的:(before)