java – 看似无限循环终止,除非使用System.out.println
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 看似无限循环终止,除非使用System.out.println,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含923字,纯文字阅读大概需要2分钟。
内容图文
![java – 看似无限循环终止,除非使用System.out.println](/upload/InfoBanner/zyjiaocheng/708/a92b4289a63d4c99b3e7bcd4293b47a3.jpg)
我有一个简单的代码,应该是一个无限循环,因为x将永远增长,并将始终保持大于j.
int x = 5;
int y = 9;
for (int j = 0; j < x; j++) {
x = x + y;
}
System.out.println(y);
但是按原样,它打印y并且不会无休止地循环.我无法弄清楚为什么.但是,当我按以下方式调整代码时:
int x = 5;
int y = 9;
for (int j = 0; j < x; j++) {
x = x + y;
System.out.println(y);
}
System.out.println(y);
它变成了无限循环,我不明白为什么. java是否认识到它是无限循环并在第一种情况下跳过它但是必须在第二种情况下执行方法调用,以便它按预期运行?
困惑:)
解决方法:
这两个例子都不是无穷无尽的.
问题是Java中的int类型(或几乎任何其他常用语言)的限制.当x的值达到0x7fffffff时,添加任何正值将导致溢出,x变为负值,因此低于j.
第一个和第二个循环之间的区别在于内部代码需要花费更多时间,并且在x溢出之前可能需要几分钟.对于第一个示例,它可能需要不到第二个或最有可能的代码将被优化器删除,因为它没有任何影响.
如讨论中所述,时间将在很大程度上取决于OS如何缓冲输出,是否输出到终端仿真器等,因此它可能远高于几分钟.
内容总结
以上是互联网集市为您收集整理的java – 看似无限循环终止,除非使用System.out.println全部内容,希望文章能够帮你解决java – 看似无限循环终止,除非使用System.out.println所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。