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。所以开发中考虑到各种数据类型的取值范围,特别是条件判断及边界取值时。
相关推荐
-
Java for循环几种写法整理
Java for循环几种写法整理 概要: J2SE 1.5提供了另一种形式的for循环.借助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象.本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类,并解释和这一机制的一些常见问题. 在Java程序中,要"逐一处理"――或者说,"遍历"――某一个数组或Collection中的元素的时候,一般会使用一个for循环来实现(当然,用其它种类的循环也不是不可以,只是不知道是因为fo
-
Java中遍历数组使用foreach循环还是for循环?
从JDK1.5起,增加了新功能Foreach,它是for循环遍历数据的一种简写形式,使用的关键字依然是for,但参数格式不同.其详细用法为: for(Type e:collection){ //对变量e的使用} 参数说明: e:其类型Type是集合或数组中元素值的类型,该参数是集合或数组collection中的一个元素. collections: 要遍历的集合或数组,也可以是迭代器. 在循环体中使用参数e,该参数是foreach从集合或数组以及迭代器中取得的元素值,元素值是从头到尾进行遍历的.
-
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增强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使用for循环输出杨辉三角
思路是创建一个整型二维数组,包含10个一维数组.使用双层循环,在外层循环中初始化每一个第二层数组的大小.在内层循环中,先将两侧的数组元素赋值为1,其他数值通过公式计算,然后输出数组元素. 复制代码 代码如下: public class YanghuiTriangle { public static void main(String[] args) { int triangle[][]=new int[10][];// 创建二维数组 // 遍历二维数组的第一层
-
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循环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的foreach循环
使用foreach循环遍历数组和集合时,无需获得数组和集合的长度,无须根据索引来访问数组元素和集合元素,foreach循环自动遍历数组和集合的每一个元素. 复制代码 代码如下: foreach的语句格式: for(type variableName : array|connection){ //variable自动迭代访问每一个元素} 例子: 复制代码 代码如下: public class ForEachTest{public static void main(String[] arg
-
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 = {
随机推荐
- ASP实现类似hashMap功能的类
- 基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
- jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
- python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
- 关于svn冲突的解决方法
- PHP备份数据库生成SQL文件并下载的函数代码
- php 多线程上下文中安全写文件实现代码
- C++映像劫持后门实例分析
- 深入理解mysql SET NAMES和mysql(i)_set_charset的区别
- Spring 整合 Hibernate 时启用二级缓存实例详解
- 整理Javascript基础语法学习笔记
- 某年第一周开始日期实现方法
- 网页中表单按回车就自动提交的问题的解决方案
- jQuery选择器全面总结
- vue2.x 父组件监听子组件事件并传回信息的方法
- javascript document.referrer 用法
- 简单实现java音乐播放器
- 系统安全:Win XP SP2 配置及故障解决技巧大揭露
- 墙中自有墙中墙首Vista防火墙详解(上)第1/4页
- node.js中的console.assert方法使用说明