‹5› Java面试必备知识点:『流程控制』

if 条件语句

语法格式:

if(…) …

其中的条件判断必须使用括号括起来不能省略。

使用:

int i = 1;
if (i > 1) {
    System.out.println("i大于一");
} else if (i == 1) {
    System.out.println("i等于一");
} else {
    System.out.println("其他");
}

while 循环语句

while 当条件成立的时候执行下一条语句。

语法格式:

while(…) …

使用:

int i = 0;
while (i < 3) {
  System.out.println(++i);
}

while 是先判断再决定是否执行,有可能一次也不执行,如果希望至少执行一次,可以使用 do/while。

do/while 循环语句

do/while 之后必须使用分号 ; 结尾。

语法格式:

do{…}while(…);

使用:

int i = 0;
do {
  System.out.println(++i);
} while (i < 3);

for 确定循环

for 循环是程序中最长使用的循环之一,它是利用每次迭代之后更新计数器来控制循环的次数。

语法格式:

for(int i=0;i<n;i++){ … }

使用:

for (int i = 0; i < 10; i++) {
    System.out.println("i=" + i);
}

for 循环中可使用关键字 continue,跳过后续操作,继续下一次迭代

例如:

for (int i = 1; i < 4; i++) {
    if (i == 2) continue;
    System.out.println("i=" + i);
}

执行结果:

i=1
i=3

如结果所示,第二次循环就会跳过,执行下一次循环。

注意事项

在循环中检查两个浮点数是否相等要格外小心,例如下面代码:

public static void main(String[] args) {
    for (float i = 0; i != 1; i += 0.1) {
        System.out.println(i);
    }
}

循环永远不会停下来,由于舍入误差,因为 0.1 无法精确的用二进制表示,所以上面代码到 0.9000001 之后,会直接跳到 1.0000001,不会等于 1,所以循环就永远不会停下来。

switch 多重选择

switch 的特点是可以判断多个条件,if 的特点是执行少量判断,它们两个刚好形成互补的关系。

语法格式:

switch(…){ case 1: … break; … default: … break; }

使用:

int i = 3;
switch (i) {
    case 1:
        System.out.println("等于1");
        break;
    case 2:
        System.out.println("等于2");
        break;
    case 3:
        System.out.println("等于3");
        break;
    default:
        System.out.println("等于其他");
        break;
}

可用于 case 的类型有:

  • byte、char、short、int
  • 枚举
  • 字符串(Java 7 新加入)

注意事项

switch 使用时,每个选项最末尾一定不要忘记加 break 关键字,否则会执行多个条件。

例如:

int i = 1;
switch (i) {
    case 1:
        System.out.println("等于1");
    case 2:
        System.out.println("等于2");
    case 3:
        System.out.println("等于3");
    default:
        System.out.println("等于其他");
}

程序执行的结果:

等于1
等于2
等于3
等于其他

所以使用 switch 时,每个选项的末尾一定得加 break 关键字。

1.以下代码能不能正常执行?

if (true) System.out.println("laowang");

答:可以正常执行,其中判断条件的括号不能省略,大括号是可以省略的(作者并不建议为了省代码的而牺牲代码的可读性)。

2.以下 switch 执行的结果是什么?

int num = 1;
switch (num) {
    case 0:
        System.out.print("0");
    case 1:
        System.out.print("1");
    case 2:
        System.out.print("2");
    case 3:
        System.out.print("3");
    default:
        System.out.print("default");
}

答:123default

3.switch 能否用于 byte 类型的判断上?能否用于 long 类型的判断上?

答:switch 支持 byte 类型的判断,不支持 long 类型的判断。

switch 支持的全部类型(JDK 8):char/ Charachter、byte / Byte、short / Short、int / Integer 、String、enum。

switch 不支持的全部类型(JDK 8):long/Long、float/Float、double/Double

4.while 必须配合 break 一起使用的说法正确吗?

答:错误,while 可以单独使用。

例如:

int i = 0;
while (i < 3) {
    System.out.println(++i);
}

5.以下代码可以正常运行吗?为什么?

int i = 0;
while (i < 3) {
    if (i == 2) {
        return;
    }
    System.out.println(++i);
}

答:可以正常运行,这里的 return 和 break 的效果是一致的,while 可以配合 return 或 break 一起使用

6.以下的程序执行结果什么?

int i = 0;
do {
  System.out.println(++i);
} while (i < 3)

答:编译器报错,do/while 之后必须使用分号 ; 结尾。

7.以下程序输出的结果是?

String s = new String("cat");
String s2 = new String("cat");
System.out.println(s == s2);
switch (s) {
    case "cat":
        System.out.println("cat");
        break;
    default:
        System.out.println("default");
        break;
}

A:true,default
B:false,default
C:false,cat
D:true,cat

答:C,这表示switch循环语句是使用了equals来比较字符串

8.以下代码循环执行了几次?

for (float i = 0; i != 10; i += 0.1) {
    System.out.println("cat");
}

答:无数次,循环永远不会停下来。由于舍入误差,因为 0.1 无法精确的用二级制表示,所以上面代码到 0.9000001 之后,会直接跳到 1.0000001,不会等于 1,所以循环就永远不会停下来。

9.Java 中如何跳出多重嵌套循环?

答:Java 中跳出多重嵌套循环的两种方式。

  • 方法一:定义一个标记,使用 break 加标记的方式
  • 方法二:使用全局变量终止循环

方法一,示例代码:

myfor:
for (int i = 0; i < 100; i++) {
    for (int j = 0; j < 100; j++) {
        System.out.println("J:" + j);
        if (j == 10) {
            // 标记
            break myfor;
        }
    }
}

方法二,示例代码:

boolean flag = true;
for (int i = 0; i < 100 && flag; i++) {
    for (int j = 0; j < 100; j++) {
        System.out.println("J:" + j);
        if (j == 10) {
            flag = false;
            break;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值