Java 中可以有多少个嵌套 for 循环? 我们可以继续添加嵌套的 for 循环直到无限吗? Java编译器可以支持多少个for循环?
最佳答案
编译器中的堆栈大小是有限的;如果嵌套循环太多,您将收到 StackOverflowError
。
如果运行以下 bash 脚本(生成 N
嵌套 for 循环),我会收到 StackOverflowError
:
#!/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 则不能)
您可以使用 -J-Xss
标志增加 javac
堆栈的大小。
单个方法的字节码大小也有 64kB 的限制;如果您正在编写“做某事”的 for 循环,那么在破坏编译器堆栈之前您可能会达到此限制;编译器将上述脚本生成的简单 for 循环优化为仅一个无限循环。
关于java - 嵌套 for 循环 - 有多少个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38476345/