在进行Java开发的过程中,我们肯定会遇到java死循环,导致无法进入到下一步,这样只会影响java项目开发,所以我们要找出java死循环的原因,那java死循环会抛出什么异常?下面来我们就来给大家讲解一下。
堆栈溢出异常。当一个应用递归调用的层次太深而导致堆栈溢出或者陷入死循环时抛出该异常。java可能出现死循环情况:
一.for循环下,如果没有循环执行条件,那么循环将无条件执行,一直执行下去,如下:
1.for循环中不定义循环变量,不定义循环执行条件,不定义循环变量变化过程,那么这一定是个死循环
代码:
for (;;) { undefined System.out.println("asdasd"); }
2.for循环中,循环变量初始化,定义循环变量变换过程,不定义执行条件,那么这个循环就会无条件执行
代码:
for (int i = 0;; i++) { undefined System.out.println("asdasd"); }
二.for循环下,如果有循环执行条件,在循环变量永远满足循环执行条件下,循环一直执行。
3.for循环中,循环变量初始化,定义循环执行条件,不定义循环变量变化过程,那么就会一直满足循环执行条件,循环一直执行
代码:
for (int i = 0; i < 100;) { undefined System.out.println("asdasd"); }
4.for循环中,循环条件全部定义,循环变量每次变化增加(减少)的数量如果跟循环体内循环变量每次减少(增加)的数量相等,那么就等于说
循环变量没有变化,循环一直满足循环条件,循环一直执行。
代码:
for (int i = 0; i < 100; i++) { undefined System.out.println("asdasd"); i--; }
5.for循环中,如果循环变量永远满足循环执行条件,那么循环一直执行
代码:
for (int i = 0; i < 100; i--) { undefined System.out.println("asdasd"); }
三.for循环中,如果循环执行条件表达式为真,那么循环一直执行下去,跟循环变量初始化和循环变量变化过程没有一毛钱关系。
6.for循环中,如果循环执行条件一直为真,没有结束条件,那么循环一直执行
代码:
for (int i = 0; true; i++) { undefined System.out.println("asdasd"); } for (int i = 0; 1 == 1; i++) { undefined System.out.println("asdasd"); } for (int i = 0; 1 < 11; i++) { undefined System.out.println("asdasd"); } for (int i = 0; 1 != 11; i++) { undefined System.out.println("asdasd"); } for (int i = 0; 11 > 1; i++) { undefined System.out.println("asdasd"); } for (int i = 0; 11 >= 1; i++) { undefined System.out.println("asdasd"); } for (int i = 0; 1 <= 11; i++) { undefined System.out.println("asdasd"); } for (int i = 0; !false; i++) { undefined System.out.println("asdasd"); } for (int i = 0; true || false; i++) { undefined System.out.println("asdasd"); } for (int i = 0; true && true; i++) { undefined System.out.println("asdasd"); }
java死循环有哪些危害?
1.程序进入假死状态, 当某个请求导致的死循环,该请求将会在很大的一段时间内,都无法获取接口的返回,程序好像进入假死状态一样。
2.cpu使用率飙升,代码出现死循环后,由于没有休眠,一直不断抢占cpu资源,导致cpu长时间处于繁忙状态,必定会使cpu使用率飙升。
3.内存使用率飙升,如果代码出现死循环时,循环体内有大量创建对象的逻辑,垃圾回收器无法及时回收,会导致内存使用率飙升。同时,如果垃圾回收器频繁回收对象,也会造成cpu使用率飙升。
4.StackOverflowError,在一些递归调用的场景,如果出现死循环,多次循环后,最终会报StackOverflowError栈溢出,程序直接挂掉。
java死循环的危害还是比较多的,总之我们在遇到java死循环的时候,一定要及时解决,不然多次出现死循环,可能直接让程序崩溃!最后大家如果想要了解更多java常见问答知识,敬请关注奇Q工具网。
推荐阅读: