第二章 Java基本语法(下):程序流程控制
三种基本流程结构:
顺序结构、分支结构、循环结构
从键盘输入:
1. 导包:import java.util.Scanner
2. Scanner的实例化:Scanner scan = new Scanner( System.in );
3. 调用Scanner类的相关方法( next( ) / nextXXX( ) ),来获取指定类型的变量
4. 对于char型的获取,Scanner没有提供相关的方法,只能获取一个字符串,不过可以用charAt( 0 )从字符串里提取
注:需要根据相应的方法来输入指定类型的值,如果输入的数据类型与要求的类型不匹配,会报异常:InputMisMatchException,导致程序终止。
If-else结构:
else结构可选
若多个条件表达式之间是“互斥”关系( 或者没有交集 ),判断语句和执行语句的声明顺序无所谓
若多个条件表达式之间是包含关系,通常先声明范围小的
注:根据就近原则,else与跟它距离最近的if配对
获取随机数: Math.random( ) // 返回一个[0.0,1.0)之间的double
获取[a,b]之间的整数,公式: (int)( Math.random( )*(b-a+1) + a )
比较两个字符串是否相等:可以用String类的equals方法 e.g. Str1.equals( Str2 ) Str1.equals(“是”)
switch-case结构:
1. 根据switch表达式中的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应case结构中,调用其执行语句,调用结束后继续向下执行其他case结构中的执行语句,直到遇到break关键字或者此switch-case结构结束为止。
2. break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出该结构。
3. switch结构中的表达式,只能是如下6种数据类型之一:byte、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)
4. case之后只能声明常量,不能声明范围
5. 如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并
If和switch的对比:
凡是可以使用switch-case的结构,都可以转化为if-else。反之,不成立。
如果判断的具体数值不多,而且符合switch的6种类型。虽然两个语句都可以使用,建议使用swtich语句。因为switch效率稍高
其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广
循环语句的4个组成部分:
①初始化部分
②循环条件部分 ——boolean类型
③循环体部分
④迭代部分
for循环的结构
for( ① ; ② ; ④ ){
③;
}
执行过程:① — ② — ③ — ④ — ② — ③ — ④ …. ②
初始化部分声明的变量只在for循环内有效
while循环的结构
①
while( ② ){
③;
④;
}
注:写while循环注意不要忘记 ④,否则会导致死循环
for Vs. while:
for循环和while循环可以相互转换
区别:for循环和while循环的初始化条件部分的作用范围不同
不在循环条件部分限制次数:for( ; ; ) 或者 while( true ) —> 使用break来跳出循环
do-while循环的结构
①
do{
③;
④;
}while( ② );
执行过程:① — ③ — ④ — ② — ③ — ④ …. ②
do-while循环至少会执行一次循环体
break Vs. continue:
使用范围 | 不同点 | 相同点 | |
break |
switch-case
循环结构
|
结束当前循环 | 关键字后面不能声明任何执行语句,即使声明了也不能被执行 |
continue | 循环结构 | 结束当次循环 |
break、continue默认跳出包裹此关键字最近的一层循环,可以通过加标签来结束指定标识的一层循环结构
