Java中控制语句只有七种,分别是if,switch,for,while,do-while,break和continue。
目录
一、选择结构
1.if语句
2.switch语句
二、循环结构
1.for循环
2.while循环
3.do-while循环
三、选择语句
1.break语句
2.continue语句
3.continue和break的区别
又称为分支语句,常用于单,双分支判断【也可用于多分支判断】
if语句的四种语法格式:
第一种:单分支
if(布尔表达式){
Java语句....
//如果布尔表达式为真,那么执行这里面的Java语句,否则不执行
}
********************************************************************************
第二种:双分支
if(布尔表达式){
Java语句....
//如果布尔表达式为真,那么执行这里面的Java语句
}
else{
Java语句....
//如果布尔表达式为假,那么执行这里面的Java语句
}
*******************************************************************************
第三种:多分支
if(布尔表达式1){
Java语句....
//如果布尔表达式1为真,执行这里面的Java语句
}else if(布尔表达式2){
Java语句....
//如果布尔表达式2为真,执行这里面的Java语句
}else if(布尔表达式3){
Java语句....
//如果布尔表达式3为真,执行这里面的Java语句
}
.....
*********************************************************************************
第四种:多分支
if(布尔表达式1){
Java语句....
//如果布尔表达式1为真,执行这里面的Java语句
}else if(布尔表达式2){
Java语句....
//如果布尔表达式2为真,执行这里面的Java语句
}else if(布尔表达式3){
Java语句....
//如果布尔表达式3为真,执行这里面的Java语句
}else{
Java语句....
//如果以上表达式都为假,那么执行这里面的Java语句
}
注:if语句大括号省略,表示后面只可以跟一句Java语句
if(sex)
System.out.println("男");
System.out.println("HelloWorld!"); // 以上的这3行代码没有问题,合乎语法。
/*
else // 这一行编译报错,因为else缺少if
System.out.println("女");
*/
以上代码编译器会自动转换为:
if(sex){
System.out.println("男");
}
System.out.println("HelloWorld!");
else// 这一行编译报错,因为else缺少if
System.out.println("女");
总结:
1
条,那么大括号{}可以省略,但为了 可读性,最好不要省略。实战:
//需求:假设系统给定一个人的年龄(这个年龄需要从键盘输入),根据年您判断他属于生命的哪个
//阶段.
// 【0~5】 幼儿
// 【6~10】 少儿
// 【11~18】 青少年
// 【19~35】 青年
// 【36~55】 中年
// 【56~150】 老年
public class hello {
public static void main(String[] args) {
//这段内容看不懂返回上一章获取键入内容
java.util.Scanner s=new java.util.Scanner(System.in);
System.out.print("请输入你的年龄:");
int num=s.nextInt();
String grade="您的年龄不合法";
//逻辑业务判断
if(num<0||num>150){
System.out.println(grade);
}
else {
if(num<=5){
grade="您处在生命周期的幼儿阶段";
}
else if(num<=10){
grade="您处在生命周期的少儿阶段";
}
else if(num<=18){
grade="您处在生命周期的青少年阶段";
}
else if(num<=35){
grade="您处在生命周期的青年阶段";
}
else if(num<=55){
grade="您处在生命周期的中年阶段";
}
else{
grade="您处在生命周期的老年阶段";
}
System.out.println(grade);
}
}
}
例子很简单,但是我们应该注意怎么写才能让代码的执行效率最高
分支语句,常用于多分支判断
语法格式:
switch(值){
case 值1:java语句;...break;//如果值与值1相等,那么执行这里面的Java语句
case 值2:java语句;...break;//如果值与值2相等,那么执行这里面的Java语句
case 值3:java语句;...break;//如果值与值3相等,那么执行这里面的Java语句
default:java语句;//以上值都不想等,那么执行这里面的Java语句
}
注意:每一个分支后面都需要写上break表示程序在执行完分支后立即退出,不然会出现case穿透
case合并与case穿透
//case合并
switch (12){
case 12:
case 13:
case 14:
case 15:
System.out.println("他们是共用的");
}
//运行结果:他们是共用的
解析:以本代码为例,表示12,13,14,15只要满足其中一个就可以执行System.out.println("他们是共用的");
//case穿透
switch (12){
case 12: System.out.println("1");
case 13: System.out.println("2");
case 14: System.out.println("3");
}
//输出结果:1
2
3
解析:当12与12匹配后立即执行后面的代码,由于没有break,程序不会退出,会继续执行下面所有
选项的Java语句
总结:
switch语句只支持int和String,但是byte,short,char
也可以,因为byte short char可以进行自动类型转换,其他类型需要强制转换
为避免case穿透,每一个分支后面都要写上break【default不是必须要写】
case可以合并
语法格式:
for(初始化表达式; 条件表达式; 更新表达式){
循环体; // 循环体由java语句构成,需要重复执行的代码片段
java语句;
java语句;
java语句;
java语句;
....
}
注:
int a=0;
for (;a<5;a++){
System.out.println(a);//0,1,2,3,4
}
System.out.println(a);//5
for ( int a=0;a<5;a++){
System.out.println(a);//0,1,2,3,4
}
System.out.println(a);//找不到符号变量a
解析:切记不要把其他编程语言的迭代作用域与Java混淆,比如JS。第一段代码是调用了for括号外面的
变量a,a在for{}的外面,所以可以直接访问到,在循环体结束后将迭代变量的值又返还给了变量a,所以
在外面a的值在迭代的作用下变为了5
第二段代码由于a被定义在for{}里面,结果仍然可以可以返还给a,但此时a为局部变量了,外面无
法访问到
总结:
语法格式:
while(布尔表达式){
循环体;
}
//判断布尔表达式的结果,如果为true就执行循环体,循环体结束之后,再次判断布尔表达式的结果,
//如果还是true,继续执行循环体,直到布尔表达式结果为false,while循环结束。
for与while的转换
for(初始化表达式; 布尔表达式; 更新表达式){
循环体;
}
初始化表达式;
while(布尔表达式){
循环体;
更新表达式;
}
总结: while循环的循环体可能执行次数为0次。
语法格式:
do {
循环体;
}while(布尔表达式);
//先执行循环体当中的代码,执行一次循环体之后,判断布尔表达式的结果,如果为true,则继续执行
//循环体,如果为false循环结束。
总结:
跳出指定循环:
第一步:你需要给循环起一个名字,例如:
a: for(){
b:for(){
if(条件表达式) break a;
code1;
code2;
code3;
}
}
第二步:终止:break a;
//关于break与continue语句跳出循环的易错点可参考JS专栏第五篇“JS中的语句详解与函数定义”,这与Java是一样的
总结:
使用continue跳过指定循环
a:for(;;更新表达式1){
b:for(;;更新表达式2){
if(条件表达式){
continue a;
}
code1;
code2;
code3;
}
}
总结:
最后给大家总结极其重要的一点:所有控制语句都可以嵌套使用,但是嵌套使用时候一定要保证格式完美【该缩进缩进】