您的位置:首页 > 产品设计 > UI/UE

java的选择结构switch和循环结构for while do while以及流程控制语句break continue return

2017-04-18 02:37 1071 查看
第二种选择结构

switch case

switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体;
break;
...
default:
语句体n+1;
break;

}

表达式这里的值可以是 int short char byte String(JDK7以后) 枚举值 

执行 值与表达式相同的语句体,default用于执行当所有值都不与表达式值相同时的情况,break用来终止switch 语句体

注意点:

case后面只能跟常量,不能是变量;case后面的唯一不可重复,不可以写两个case 后面的值是一样的;default可以出现在任意位置,比如可以穿插在case

中间;switch语句的结束条件:1.遇到break 2.整个switch语句体执行到最后一条了;case穿透:如果case或者default后面没有加上break的话,那么会继续

之后的语句,比如

case 值1:
语句1;

case 值2:
语句2;

default:
语句3;

case 值3:
语句4;

上面的语句中,如果因为满足条件执行任何一条语句的话,后面的都会继续执行

switch和if如何抉择

以下情况只能用if不能用switch:

当判断的条件是boolean类型的时候

当判断的条件是范围的时候,比如判断一个值是否在1~99的范围之内

switch和if都可以使用的场景:

针对几个常量值的判断

循环结构

1.for循环

for(初始化语句;判断条件语句;控制条件语句){
循环体语句;

}

执行顺序:

初始化->判断条件语句->循环体语句->控制条件语句->判断条件语句..

注意点:

for()后面的循环体语句如果只有一条语句的话那么可以不用大括号,当然和if一样不要再for()后面写;,比如for();

这个意思是后面加了一条了空语句,这样的话循环表示什么都不执行,建议是不论循环体有几条语句都加上大括号{}

 

2.while循环

基本格式

while(判断条件语句){
循环体语句;

}

当然在一个循环当中,初始化和控制条件语句其实都是必要的,while循环也可以写成这个形式

初始化语句

while(判断条件语句){

循环体语句;

控制条件语句;

}

while循环和for循环的功能完全一致,二者可以互换

这个形式下,语句的执行顺序和逻辑其实和for是完全一致的,但是为了书面形
4000
式上的好理解,一般

如果是对于数值范围内的循环就使用for循环

如果是数值范围以外的特定条件(比如判断用户的输入字符串是否是"end"了,这种就使用while

3.do..while循环

do{
循环体语句;

}(判断条件语句);

初始化语句

do{
循环体语句;
控制条件语句

}while(判断条件语句);

相比while 和for就是最起码会执行一次循环体

注意:

写在循环的大括号中的变量,它的作用范围只有{}中这段范围。

练习:

输出九九乘法表
for(int i=1;i<10;i++){
for(int j=1;j<i+1;j++){
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}

程序没什么好说的,我要注意的反倒是这个输出中的 \t转义字符

在print的输出的字符串输入 \转义字符 这样的形式,输出的时候会对其进行转义,而\t就相当于是键盘上tab键的位置,会是光标跳到下一个

tab的位置,而不是跳转固定的长度,比如上面的九九乘法表的输出语句如果写成System.out.print(i+"*"+j+"="+i*j+"    ");

那么结果会不对齐,因为空格跳转的是固定的长度

\n换行

\r回车

流程控制语句中用到了跳转控制语句

goto 是java的保留字,表示可以跳转到程序的其它位置,但是由于太过灵活,也就是它一定会跳到一个地方,有个时候反倒不方便

有时候我们希望程序达到某个条件的时候,程序直接结束就需要用到break中断 continue继续 return返回

break:

break的使用场景有且只有两种

1.switch中

2.循环语句中(循环体语句中加入了if判断)用于跳出单层循环

第一种情况已经介绍过,在第二种情况,break的使用注意是跳出单层循环而且是当前层的循环,比如有个两层的循环
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
if(i==2){
break;
}
System.out.print("循环:i="+i);
}
System.out.println();//用于换行
}

上面的语句中,当i=2时,将不会有输出

如果希望能够跳出多层循环,需要使用标签法,来实现break跳出“指定“的循环语句

首先使用 标签名: 语句;的形式定义标签

然后使用 break 标签名的形式结束语句

上面的示例语句可以改写为
outter:for(int i=0;i<10;i++){
inner:for(int j=0;j<10;j++){
if(i==2){
break inner;
}
System.out.print("循环:i="+i);
}
System.out.println();//用于换行
}

如果要跳外层则写为
outter:for(int i=0;i<10;i++){
inner:for(int j=0;j<10;j++){
if(i==2){
break outter;
}
System.out.print("循环:i="+i);
}
System.out.println();//用于换行
}

不过跳多层循环,在实际开发中几乎用不到,了解一下就行

continue:

使用场景:

只在循环中使用

continue可以跳出”1次“循环

比如for(...){
if(..){
continue;
}
语句;

}

当满足条件的时候,后面的语句全部都不执行了。

return:

return其实作用与循环用来结束循环的,它是用来结束方法的,当调用return的时候,它会结束当前方法并跳转到上级方法并且返回值给上级方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐