流程控制语句
顺序结构
写在前面的先执行,写在后面的后执行
选择结构
if
-
当条件只有一对立面的时候
if(关系表达式true){ 语句体; } if(关系表达式true)//不建议,代码可读性差 语句体;
- 关系表达式无论简单还是复杂,结果必须是boolean类型
- if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略
- if结构后面没有分号;
-
当条件有两个对立面的时候
if(关系表达式) { 语句体1; }else { 语句体2; }
- else否定离他最近的if
- 关系表达式true执行语句体1,false执行语句体2
- 三元运算符一定可以转换为if else语句,但if else语句不一定能转换为三元运算符
- 因为三元运算符必须要求有一个结果返回,如果语句体是一个输出语句就不能转换为三元运算符
-
当条件有多个对立面的时候
if(关系表达式1) { 语句体1; }else if (关系表达式2) { 语句体2; } … else { 语句体n+1; }
- 首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false
…
如果没有任何关系表达式为true,就执行语句体n+1。
- 首先判断关系表达式1看其结果是true还是false
//满足java的语法要求,不会报错
int x = 100;
if(100>100);
{
System.out.println("哈哈哈");
}
------------
输出
哈哈哈
switch case
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
- 格式
- expression:
表达式的取值:byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是String - case后面跟的是要和表达式进行比较的值
- 语句体部分可以是一条或多条语句
- break表示中断,结束的意思,可以结束switch语句
- default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
- expression:
- expression依次与case进行比较,遇到匹配的case,开始执行语句以及后面case的语句直到遇到break;结束,否则执行到程序的末尾
- 如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉
- case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
- default位置任意,一般放在最后,可以省略。一般不建议。除非判断的值是固定的。
循环结构
for
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
-
初始化语句,执行一次,可以创建一些循环中使用的初始变量,循环结束后释放
-
判断条件语句,每次循环都执行
-
控制条件语句,每次循环结束之后运行
-
for中的三个条件都可缺省,但;(分号)不能少
-
for循环中变量的作用范围
for中的变量只在for循环中有效int i = 0; for (int i = 0; i < 5; i++) {//error:Duplicate local variable i int h = 0;//error:Duplicate local variable h int j = 0; } int h = 0;//不报错,可以再次声明 int j= 0;
-
for循环的嵌套一般不超过三层(超过三层说明方案有问题)
while
先进行判断,true则执行语句,然后返回再判断,false离开循环体
基本格式
while(判断条件语句) {
循环体语句;
}
扩展格式
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
for循环和while循环的区别
- 使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
- 场景区别:
- for循环适合针对一个范围判断进行操作
- while循环适合判断次数不明确操作
do while
先执行do里面的语句,然后判断,true则返回do语句,false结束循环
基本格式
do {
循环体语句;
}while((判断条件语句);
扩展格式
初始化语句;
do {
循环体语句;
控制条件语句;
} while((判断条件语句);
- 三种循环语句其实都可以完成一样的功能,也就是说可以等价转换,但还是有小区别的:
- do…while循环至少会执行一次循环体。
- for循环和while循环只有在条件成立的时候才会去执行循环体
- 写程序优先考虑for循环,再考虑while循环,最后考虑do…while循环。
跳转控制语句
注意break continue return执行之前的语句都会执行,只影响执行之后的语句
break
结束循环
- 不带标签的break:跳出当前循环
- 带标签的break:跳出标签处的循环
- break的使用场景:
- 在选择结构switch语句中
- 在循环语句中
- 离开使用场景的存在是没有意义的
- break的作用:
- 跳出单层循环
- 跳出多层循环
- 带标签的跳出
- 格式:标签名: 循环语句
- 标签名要符合Java的命名规则
//带标签的break:跳出外层循环
back:{
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if(j == 6) {
break back;//跳出外层循环
}
System.out.print(j+i+"\t");
}
System.out.print("\n");
}
}
//---------------------------------------------------
back:for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if(j == 6) {
break back;//跳出外层循环
}
System.out.print(j+i+"\t");
}
System.out.print("\n");
}
continue
跳过当前循环
- continue的使用场景:
- 在循环语句中
-离开使用场景的存在是没有意义的
- 在循环语句中
- continue的作用:
- continue 退出本次循环,跳到循环的下一次
//带标签的continue:跳过外层本次循环,进入下一次
back:for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if(j == 6) {
continue back;//跳过外层本次循环,进入下一次
}
System.out.print(j+i+"\t");
}
System.out.print("\n");
}
return
离开方法
- 存在分支时,每一条分支都要有return
网友评论