No_16_0223 Java基础学习第四天
| 文档版本 | 开发工具 | 测试平台 | 工程名字 | 日期 | 作者 | 备注 |
|---|---|---|---|---|---|---|
| V1.0 | 2016.02.23 | lutianfei | none |
选择结构(switch语句)
- switch语句格式:
switch(表达式) {case 值1:语句体1;break;case 值2:语句体2;break;…default:语句体n+1;break; //可以省略}
格式解释
- switch表示这是switch语句
- 表达式的取值:byte,short,int,char
- JDK5以后可以是枚举
- JDK7以后可以是String
- case后面跟的是要和表达式进行比较的值
- 语句体 部分可以是一条或多条语句
- break表示中断,结束的意思,可以结束switch语句
- default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
- switch表示这是switch语句
执行流程
- 首先计算出表达式的值
- 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
- 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

注意事项
- case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
- default可以省略吗?
- 可以省略。一般不建议因为其作用是对不正确的情况给出提示。除非判断的值是固定的。(单选题)
- break可以省略吗?
- 可以省略,一般不建议。否则结果可能不是你想要的
- default的位置一定要在最后吗?
- 可以出现在switch语句任意位置。
- switch语句的结束条件
- 遇到break
- 执行到程序的末尾
例题:
int x = 2;int y = 3;switch(x){default:y++;case 3:y++;case 4:y++;}System.out.println("y="+y);
- 分析:
- 先跳转到default : y = 4
- 再跳转到case 3: y = 5
- 再跳转到case 4: y = 6
- 已执行到swith尾部,跳出 所以y = 6
补充知识点:键盘字符串输入
String s = sc.nextLine();
if和switch应用场景区分:
- if语句使用场景:
- 针对结果是boolean类型的判断
- 针对一个范围的判断
- 针对几个常量值的判断
- switch语句使用场景:
- 针对几个常量值的判断
- if语句使用场景:
循环结构
- 循环语句的组成
- 初始化语句:
- 一条或者多条语句,这些语句完成一些初始化操作。
- 判断条件语句:
- 这是一个boolean 表达式,这个表达式能决定是否执行循环体。
- 循环体语句:
- 这个部分是循环体语句,也就是我们要多次做的事情。
- 控制条件语句:
- 这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。
- 初始化语句:
for结构循环
- for循环语句格式:
for(初始化语句;判断条件语句;控制条件语句) {循环体语句;}
- 执行流程
- A:执行初始化语句
- B:执行判断条件语句,看其结果是true还是false
- 如果是false,循环结束。
- 如果是true,继续执行。
- C:执行循环体语句
- D:执行控制条件语句
- E:回到B继续
典型应用
- 1~100间数据之和
for(int x=1;x<=100;x++){sum +=x;}
- 1~100间偶数和
//方式1for(int x=1;x<=100;x++){if(x%2 == 0){sum +=x;}//方式2for(int x=0;x<100;x+=2){sum +=x;}}
- 求5的阶乘
int jc=1;for(int x=1;x<=5;x++){jc*=x;}
- 在控制台输出所有的“水仙花数”(其各位数字的立方和等于该数本身,eg:153 = 1*1*1 + 5*5*5 +3*3*3)
class ForDemo{public static void main(String[] args){for(int x=100;x<1000;x++){int ge = x%10;int shi= x/10%10;int bai= x/10/10%10;if(x ==(ge*ge*ge + shi*shi*shi + bai*bai*bai)){System.out.println("shuixianhua:"+x);}}}}
while循环语句
- while循环语句格式:
- 基本格式
while(判断条件语句) {循环体语句;}
* 扩展格式
初始化语句;while(判断条件语句) {循环体语句;控制条件语句;}
- for循环语句和while循环语句可以等价转换,但还是有些小区别的
- 使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
- 场景区别:
- for循环适合针对一个范围判断进行操作
- while循环适合判断次数不明确操作
do…while循环语句格式:
- 基本格式
do {循环体语句;}while((判断条件语句);
- 扩展格式
初始化语句;do {循环体语句;控制条件语句;} while((判断条件语句);
- 练习题1:
class ForTest{public static void main(String[] args){for(int i=1;i<=9;i++){for(int j=1;j<=i;j++){System.out.print(j+"*"+i+"=" +i*j+";\t");}System.out.println();}}}
- 注:
- ’\t’:Tab键
- ‘\r’:回车
- ‘\n’:换行
跳转控制语句
- Java中的goto是保留字,目前不能使用。虽然没有goto语句可以增强程序的安全性,但是也带来很多不便,比如说,我想在某个循环知道到某一步的时候就结束,现在就做不了这件事情。为了弥补这个缺陷,Java就提供了break,continue和return来实现控制语句的跳转和中断。
- break 中断
- continue 继续
return 返回
break的使用场景:
- 在选择结构switch语句中
- 在循环语句中
- 离开使用场景的存在是没有意义的
break的作用:
- 跳出单层循环
- 跳出多层循环
- 带标签的跳出
- 格式:标签名: 循环语句
- 标签名要符合Java的命名规则
Eg:跳出多层循环
wc:for(int x=0;x<3;x++){nc:for(int y=0;y<4;y++){if(y==2){break wc; //跳出外出循环。}}}
- continue的使用场景:
- 在循环语句中
- 离开使用场景的存在是没有意义的
continue的作用:
- 单层循环对比break,然后总结两个的区别
- break 退出当前循环
- continue 退出本次循环,进入下一次执行。
- 单层循环对比break,然后总结两个的区别
Eg:
class ContinueDemo{public static void main(String[] args){for(int x=0;x<10;x++){if(x==3){break;continue;}System.out.println(x);}}}//当使用break时,输出结果:0,1,2//当使用continue时,输出结果0,1,2,4,5,6,7,8,9
- return关键字不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法。跳转到上层调用的方法。
- Eg:
class ReturnDemo{public static void main(String[] args){for(int x=0;x<10;x++){if(x==2){System.out.println("Exit");break;continue;return;}System.out.println(x);}System.out.println("Over");}}//break结果:0,1,Exit,Over//continue结果:0,1,Exit,3,4,5,6,7,8,9,Over//return结果:0,1,退出(直接退出了main方法)

浙公网安备 33010602011771号