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。所以开发中考虑到各种数据类型的取值范围,特别是条件判断及边界取值时。

(0)

相关推荐

  • java使用for循环输出杨辉三角

    思路是创建一个整型二维数组,包含10个一维数组.使用双层循环,在外层循环中初始化每一个第二层数组的大小.在内层循环中,先将两侧的数组元素赋值为1,其他数值通过公式计算,然后输出数组元素. 复制代码 代码如下: public class YanghuiTriangle {    public static void main(String[] args) {        int triangle[][]=new int[10][];// 创建二维数组        // 遍历二维数组的第一层  

  • 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循环删除集合陷阱

    首先看下面的代码: 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循环最全的用法总结

    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循环几种写法整理

    Java for循环几种写法整理 概要: J2SE 1.5提供了另一种形式的for循环.借助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象.本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类,并解释和这一机制的一些常见问题. 在Java程序中,要"逐一处理"――或者说,"遍历"――某一个数组或Collection中的元素的时候,一般会使用一个for循环来实现(当然,用其它种类的循环也不是不可以,只是不知道是因为fo

  • 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("=======

  • 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的foreach循环

    使用foreach循环遍历数组和集合时,无需获得数组和集合的长度,无须根据索引来访问数组元素和集合元素,foreach循环自动遍历数组和集合的每一个元素. 复制代码 代码如下: foreach的语句格式: for(type variableName : array|connection){      //variable自动迭代访问每一个元素} 例子: 复制代码 代码如下: public class ForEachTest{public static void main(String[] arg

随机推荐