嵌套for循环 - 多少?

时间:2016-07-20 08:40:28

标签: java loops for-loop

Java中有多少嵌套for循环? 我们可以继续添加嵌套for循环直到无限吗? Java编译器支持多少for循环?

1 个答案:

答案 0 :(得分:5)

编译器中的堆栈大小有限;如果您有太多嵌套循环,则会得到StackOverflowError

如果我运行以下bash脚本(生成StackOverflowError嵌套for循环),我得到N

#!/bin/bash

N=800

(echo "class Test { void test() {"
yes "for (;;) {" | head -n "${N}"
yes "}" | head -n "${N}"
echo "} }") > Test.java

javac Test.java

(800不是紧束缚; 700编译,800不紧)

您可以使用javac标记增加-J-Xss堆栈的大小。

单个方法的字节码大小也有64kB的限制;如果你正在编写“做某事”的循环,你可能会在打击编译器的堆栈之前达到这个限制;上面脚本生成的简单for循环被编译器优化为一个无限循环。