java - 嵌套 for 循环 - 有多少个?

标签 java loops for-loop

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/

相关文章:

java - 转换后如何修复丢失的日期时间?

java - 开发app每次都强制关闭

loops - Excel/VBA - 循环范围

javascript - 通过匹配 ID 检查 json 数组中是否已存在项目

java - extras(通知文本)未通过

java - 如何布置具有多个文本字段和确定、取消按钮的输入面板?

ios - Swift-iOS 附加一个包含 3 个图像名称的列表,循环遍历 6 个重复的数组的计数

arrays - 当i为外循环且内循环以j=i+1开始时双循环的时间复杂度

if-statement - 什么是更快?一个循环或多个 if 条件

r - dplyr 在 for 循环内突变 - 问题