自学Java25

156 阅读1分钟

引言

  • 在记录自己自学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; // 初始化为0
        int n = 1;
        while (n <= 100) { // 循环条件是n <= 100
            sum = sum + n; // 把n累加到sum中
            n ++; // n自身加1(python所谓没有的n++用法)
        }
        System.out.println(sum); // 5050
    }
}

  • 注意执行顺序,比如将上述代码的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); // -2147483648
        System.out.println(sum);
    }
}
  • 上述代码就别试了,真死机了还得重开
  • 但是Java中因为基础数据类型是有取值范围的,为啥代码结果是负数呢?
    • 表面上看,上面的while循环是一个死循环,但是,Java的int类型有最大值,达到最大值后,再加1会变成负数,结果,意外退出了while循环