引言
- 在记录自己自学java过程中,首先声明关于学习顺序可能并不很科学,即使我也是通过一些公开的资料来进行学习,但不会是完全无基础的教学,更像是比对着python(本人平时编程使用的是python)比较实现方法的异同学习,请酌情参考学习,有理解不对的地方欢迎指正。
java-流程控制 4
while循环
- 感觉while循环好像也没啥花样,除了作为一种替换的循环方式,另一个常见的场景也就是死循环了
while (条件表达式) {
循环语句
}
- while循环在每次循环开始前,首先判断条件是否成立。如果计算结果为true,就把循环体内的语句执行一遍,如果计算结果为false,那就直接跳到while循环的末尾,继续往下执行。
- 基本用法还是实现经典的1-100累加功能吧
public class Main {
public static void main(String[] args) {
int sum = 0;
int n = 1;
while (n <= 100) {
sum = sum + n;
n ++;
}
System.out.println(sum);
}
}

- 注意执行顺序,比如将上述代码的
n++和sum累计颠倒就会出现以下结果

死循环问题
- 注意死循环有的不是真正意义上的死循环比如直接使用
while True,这个只是有特定场景需要采用,但是有的死循环单纯就是条件一直满足,无法结束导致的,这样就会导致CPU或者GPU占满的情况,极大消耗资源
public class Main {
public static void main(String[] args) {
int sum = 0
int n = 1
while (n > 0) {
sum = sum + n
n ++
}
System.out.println(n)
System.out.println(sum)
}
}
- 上述代码就别试了,真死机了还得重开
- 但是Java中因为基础数据类型是有取值范围的,为啥代码结果是负数呢?
- 表面上看,上面的while循环是一个死循环,但是,Java的int类型有最大值,达到最大值后,再加1会变成负数,结果,意外退出了while循环