java解惑-在循环中

   下面的程序计算了一个循环的迭代次数,并且在循环中止时候打印了这个计数值,那么,他打印的是什么呢?

  

public class InTheLoop{
   public static final int END = Integer.MAX_VALUE
   public static final int START = END-100;
   public static void main(String[] args{
      int count = 0;
      for(int i=START;i<=END;i++){
        count++; 
     }
     System.out.println(count);
  }
}

 

 

    这个循环看循环条件,会输出101,但实际上,这是一个无限循环。

 

    问题在于这个循环会在循环索引(i)小于或等于Integer。MAX_VALUE时候持续运行,但是所有的int都小于或者等于Integer.MAX_VALUE,当i达到Integer.MAX_VALUE后,并且再次执行增量操作,就又绕回到Integer.MIN_VALUE。

 

    如果需要循环到int数值的边界附近,最好使用一个long变量类型作为循环索引。

  

    无论你在何时使用了一个整数类型,都要意识到其边界条件

   

    如果清晰性和简洁性占据了及其重要的地位,那么在这种情况下使用一个long类型的循环索引几乎总是最佳方案,但是有一个例外,如果你在所有的int数值上迭代,那么使用int类型的循环索引的速度大概可以提高一倍。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值