块和分支是什么?
块(即复合语句)是指由一对大括号{}括起来的若干条语句,其确定了变量的作用域,不能在同一个块中声明同名变量。
分支用于控制代码运行的流程,分为条件语句、循环语句、switch语句。
条件语句
条件语句由 if(){}-else if(){}-else{} 组成,其中()里为条件,{}里为对应的分支流程,else是可选的,当流程只有一行时可省略{}
int a=1;
int b=2;
if (a>b) {
System.out.println("a>b");
}else if (a<b){
System.out.println("a<b");
}else {
System.out.println("a=b");
}
循环语句
while循环
由while(){}组成,其中()里为条件,{}里为对应的分支流程,当流程只有一行时可省略{},先判断再决定是否执行
int a=0;
while(a<10){
a++;
}
dowhile循环
同上,但先执行一次再判断是否继续执行
int a=0;
do {
a++;
}while (a<10);
for循环
由for( ; ; ){}组成,()里由;分为三部分,第一部分是对计数器的初始化,第二部分是条件,第三部分是对计数器的更新
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
foreach循环
由for( : ){}组成,()里由:分为两部分,第一部分为具体的数据变量,第二部分为需要遍历数组或Iterable子类
int[] a = {1, 2, 3, 4, 5};
for (int i : a) {
System.out.println(i);
}
Tips:
- 在循环中应避免对浮点数的判等,如for(double=0.0;x!=10;x+0.1){},由于浮点数不能精准用二进制表示且存在有效位的限制,导致x永远不能等于10
switch语句
用if-else处理多条件判断时显得冗长,此时可用switch替代
- ()里为需要判断的值,可以是char、byte、short、int、Enum和String
- case表示可能的结果
- break表示当前流程结束,如果没有break表示对两个流程都统一处理
- default表示当前case都不符合时的流程
int a=0;
switch (a){
case 1:
System.out.println(1);
break;
case 2:
case 3:
System.out.println("2或3");
default:
System.out.println(0);
break;
}
分支的中断
break中断
可在分支流程的任何地方调用break跳出当前分支
int a=0;
while(a<10){
if(a==5){
break;
}
a++;
}
Java还提供了带标签的break语句,用于跳出嵌套循环,跳到指定标签处
int a=0;
int b=0;
while (a < 10) {
print:
while (b < 10) {
if (b == 5) {
b = 50;
break print;
}
b++;
}
a++;
}
continue中断
执行contiune会忽视接下来的流程进入下一次循环,如打印10以内奇数
int a = 0;
while (a < 10) {
a++;
if (a % 2 == 0) {
continue;
}
System.out.println(a);
}