何为逻辑控制呢?
在 Java 中,逻辑控制主要有以下几种结构:
1. 顺序结构:按照代码书写的顺序一行一行执行,如果调整代码的书写顺序,则执行顺序也发生变化;
2. 分支结构:
- if 语句:包括单分支、双分支和多分支三种形式,用于根据不同的条件执行不同的代码块;
- switch 语句:根据不同的条件执行不同的 case 语句,遇到 break 会结束该 case 语句,如果没有匹配的 case ,则执行 default 中的语句;
3. 循环结构:
- while 循环:当条件为真时,执行循环体中的代码,直到条件为假时结束循环;
- break 语句:用于在循环中提前结束循环;
- continue 语句:用于跳过本次循环,直接进入下一次循环。
一、顺序结构
顺序结构是最简单,也是最直观的一种结构。就是一句一句的执行代码,没有循环语句,也没有if语句。
public class Test { public static void main(String[] args) { System.out.println("11223344"); System.out.println("顺序结构"); } }
运行结果:
二、分支结构
语法风格1
if(布尔类型){
//语句
};
代码示例:
public static void main(String[] args) { int sorce=100; if(sorce>90){ System.out.println("父母很开心呢"); } }
只有一句if语句,注意if括号里面的必须是布尔类型的数据。
语法风格2
if(布尔表达式){
// 语句1
}else{
// 语句2
}
代码示例:
public static void main(String[] args) { int score=100; if(score>90){ System.out.println("父母很开心呢"); }else{ System.out.println("父母会鼓励你得到更高分"); } }
这里java有Java的代码写法,这里比较建议如上的if else语句写法而不是 像C语言一样,当然这样写也是合法的但是不建议这么写。如下:是C语言的写法。
if(布尔表达式)
{
// 语句1
}
else
{
// 语句2
}
语法风格3
if(布尔表达式1){
// 语句1
}else if(布尔表达式2){
// 语句2
}else{
// 语句3
}
代码示例:
public static void main(String[] args) { int score=100; if(score>90){ System.out.println("父母很开心呢"); }else if(score>80&&score<90){ System.out.println("父母会鼓励你得到更高分"); } else { System.out.println("父母希望你能在加把劲"); } }
if 后接分号(;)问题
int x = 20; if (x == 10); { System.out.println("hehe"); } // 运行结果 hehe
可能有些小伙伴就疑惑了,为什么会打印“呵呵”呢,明明没符合if里的要求。
其实是因为if语句后接了个分号“;”,导致if语句就是一句话,仅仅只是进行判断,无论真假都不会有什么要执行的语句,而后面的打印语句,就是下一条语句,无关if语句。都会进行打印的。
多个if else 语句的匹配
int x = 10; int y = 10; if (x == 10) if (y == 10) System.out.println("aaa"); else System.out.println("bbb");
大家觉得这里面的else是与哪个if匹配呢?
废话不多说,这里的else其实是与第二个if匹配的
这是因为这里的if else语句 中if会往向下的比较靠近的else匹配,而else则是往上找靠近的if来进行匹配。
三、switch 语句
语法形式:
switch(表达式){ case 常量值1:{ 语句1; break; } case 常量值2:{ 语句2; break; } default:{ 内容都不满足时执行语句; break; } }
这里需要注意的是,这里的switch语句中的表达式有一些限制:
第一点:
上面的switch括号里的表达式中只能是这些表达式:
基本类型:byte、char、short、int,注意不能是long类型
引用类型:String常量串、枚举类型
第二点;
switch不能够表达一些复杂的表达式
/ 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe // 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示.
if (num > 10 && num < 20) { System.out.println("hehe"); }
四、循环结构
4.1 while循环
基本语法格式:
while(循环条件){
循环语句;
}
跟C语言相似,如下我们运用while来打印1-10的数字
nt num = 1; while (num <= 10) { System.out.println(num); num++; }
4.2 for循环
语法形式:
for(表达式①;布尔表达式②;表达式③){
表达式④;
}
如下还是打印1-10的数据但这里要运用for循环:
public static void main(String[] args) { for (int i = 1; i <=10 ; i++) { System.out.print(i+" "); } }
4.3 do while循环
语法形式:
do{
循环语句;
}while(循环条件);
在这个语句里特点就是至少进行一次循环,因为这个语句第一次进循环是不需要进行判断的,所以这个语句是可以至少是可以进入一次循环的,如下代码示例:
public static void main(String[] args) { int a=0; do{ System.out.println("循环条件为大于0"); }while(a>0); }
可以看到这里我们初始化a=0;但是他还是可以进一次循环打印出了结果。
五、break与continue
break 的功能是让循环提前结束.
如下:代码我们设置小于10就进入循环,但是设置break后定格在i==5,break提前结束了循环。
public static void main(String[] args) { for (int i = 1; i < 10; i++) { System.out.println("现在是第"+i+"次循环"); if(i==5){ break; } } }
continue 的功能是跳过这次循环, 立即进入下次循环.
如下:找3的倍数,就利用了continue。
int num = 100; while (num <= 200) { if (num % 3 != 0) { num++; // 这里的 ++ 不要忘记! 否则会死循环. continue; } System.out.println("找到了 3 的倍数, 为:" + num); num++; }