Java中一个for语句导致无穷大死循环的例子
在Java开发中常用到For循环,它对简化业务处理,提高效率,非常有帮助。但要防止程序算法中可能导致死循环的情况,而且有的死循环还不好察觉。比如下面这个例子,算法极容易认为是50,实际上是无穷大的一个死循环。
public class CycTest { /** * @param args the command line arguments */ public static void main(String[] args) { int end = Integer.MAX_VALUE; //定义个循环终止数,可以无限大,区别于int型。 int start = end-50; //定义起始值 int count = 0; //初始值 for(int i=start;i<=end;i++){ //循环体 count++; //循环计数 System.out.println("本次循环次数为:"+count); //输出 } } }
输出结果:
run: 本次循环次数为:1 本次循环次数为:2 本次循环次数为:3 ...... 本次循环次数为:49 本次循环次数为:50 本次循环次数为:51 ......
总结:
可能有人认为输出结果会是50次,实际上这是个死循环。end是无限大的数,i<=end也就是无限大的数。所以说是无极限的。for(int i=start,i<end;i++),结果就是50了。i<end,表示边界值不能是一个无穷大致, 而从start到end也就变成了一段区间了,区间就是50。所以开发中考虑到各种数据类型的取值范围,特别是条件判断及边界取值时。
相关推荐
-
js的for in循环和java里foreach循环的区别分析
本文实例分析了js的for in循环和java里foreach循环的区别.分享给大家供大家参考.具体分析如下: js里的for in循环定义如下: 复制代码 代码如下: for(var variable in obj) { ... } obj可以是一个普通的js对象或者一个数组.如果obj是js对象,那么variable在遍历中得到的是对象的属性的名字,而不是属性对应的值.如果obj是数组,那么variable在遍历中得到的是数组的下标. 遍历对象实验: 复制代码 代码如下: var v = {
-
Java用for循环Map详细解析
据JDK5的新特性,用For循环Map,例如循环Map的Key 复制代码 代码如下: for(String dataKey : paraMap.keySet()) { System.out.println(dataKey ); } 注意的是,paraMap 是怎么样定义的,如果是简单的Map paraMap = new HashMap ();那前面的String就只能换成Object了. 循环整个map的key和value 复制代码 代码如下: Ma
-
Java利用for循环输出空心菱形的实例代码
程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列. 编写程序,在控制台上输出空心菱形,对角距离为6. public class Diamond { public static void main(String[] args) { printHollowRhombus(6); } public static void printHollowRhombus(int size) { if (size % 2 == 0) { size+
-
Java中遍历数组使用foreach循环还是for循环?
从JDK1.5起,增加了新功能Foreach,它是for循环遍历数据的一种简写形式,使用的关键字依然是for,但参数格式不同.其详细用法为: for(Type e:collection){ //对变量e的使用} 参数说明: e:其类型Type是集合或数组中元素值的类型,该参数是集合或数组collection中的一个元素. collections: 要遍历的集合或数组,也可以是迭代器. 在循环体中使用参数e,该参数是foreach从集合或数组以及迭代器中取得的元素值,元素值是从头到尾进行遍历的.
-
java增强for循环的实现方法
如下所示: package cn.jdk.foreach; import java.util.HashMap; import java.util.Map; public class ForEachTest { public static void main(String[] args) { int[] arr = {1,2,3}; for(int a:arr){ System.out.println(a+"\t"); } System.out.println("=======
-
java新特性之for循环最全的用法总结
1. 增强for概述 增强for循环,也叫Foreach循环,用于数组和容器(集合类)的遍历.使用foreach循环遍历数组和集合元素时,无需获得数组和集合长度,无需根据索引来访问数组元素和集合元素,大大提高的效率,代码也简洁不少. 2. Oracle官网的解释 So when should you use the for-each loop? Any time you can. It really beautifies your code. Unfortunately, you cannot
-
浅析java的foreach循环
使用foreach循环遍历数组和集合时,无需获得数组和集合的长度,无须根据索引来访问数组元素和集合元素,foreach循环自动遍历数组和集合的每一个元素. 复制代码 代码如下: foreach的语句格式: for(type variableName : array|connection){ //variable自动迭代访问每一个元素} 例子: 复制代码 代码如下: public class ForEachTest{public static void main(String[] arg
-
Java for循环几种写法整理
Java for循环几种写法整理 概要: J2SE 1.5提供了另一种形式的for循环.借助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象.本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类,并解释和这一机制的一些常见问题. 在Java程序中,要"逐一处理"――或者说,"遍历"――某一个数组或Collection中的元素的时候,一般会使用一个for循环来实现(当然,用其它种类的循环也不是不可以,只是不知道是因为fo
-
java中for循环删除集合陷阱
首先看下面的代码: import java.util.LinkedList; import java.util.List; public class DeleteCollection { public static void main(String[] args) { List<String> list = new LinkedList<String>(); list.add("a"); list.add("b"); list.add(&qu
-
java使用for循环输出杨辉三角
思路是创建一个整型二维数组,包含10个一维数组.使用双层循环,在外层循环中初始化每一个第二层数组的大小.在内层循环中,先将两侧的数组元素赋值为1,其他数值通过公式计算,然后输出数组元素. 复制代码 代码如下: public class YanghuiTriangle { public static void main(String[] args) { int triangle[][]=new int[10][];// 创建二维数组 // 遍历二维数组的第一层
随机推荐
- vue.js实现条件渲染的实例代码
- 纯脚本备份_还原驱动增强版附相关sleep.exe
- oracle 数据库隔离级别学习
- 解析一个有关sizeof用法的题目--sizeof(i++)
- 深入解析C++编程中__alignof 与__uuidof运算符的使用
- Javascript调试工具(下载)
- php && 逻辑与运算符使用说明
- JS实现双击编辑可修改状态的方法
- JavaScript 闭包在封装函数时的简单分析
- JavaScript AJAX之惰性载入函数
- 初步了解一下什么是ruby
- 深入解析Python编程中super关键字的用法
- 解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
- Jquery AJAX POST与GET之间的区别
- jQuery中事件与动画的总结分享
- js实现Select列表各项上移和下移的方法
- C语言实现双向链表
- PHP的引用详解
- jQuery+Ajax+PHP“喜欢”评级功能实现代码
- 站长空间站为您提供免费PHP空间无容量,流量限制