当我尝试运行此程序时,i
的最终值为11407
,11417
,11400
等,然后才显示堆栈溢出错误。为什么每次执行该程序时i
的最终值都不相同?
public class MainRecursive {
static int i=0;
public static void main (String arg[])
{
i++;
System.out.println(i);
main(arg);
}
}
答案 0 :(得分:3)
尝试在打印后添加System.out.flush();
。
由于堆栈大小没有变化,每次运行时我都会得到相同的值,但我认为println()
在异常更新输出之前被异常中断 - 这取决于控制台,操作系统等,不能确定。