来自:https://blog.csdn.net/qq_33611068/article/details/77369050

有这样一道题: 
编程测试,遍历 0 到 int所能表示最大的正数,将消耗的时间打印。 
下面是我的代码:

 int temp = 0;
Date dt1 = new Date();
long begintime = dt1.getTime();
for(int i=0;i<=Integer.MAX_VALUE;i++){
temp = i;
}
Date dt2 = new Date();
long endtime = dt2.getTime();
System.out.println(endtime - begintime);
 

这段代码是会陷入死循环的,就死在了for里面。 
刚开始的时候我还以为是这个数字太大了,一时半会儿遍历不到,我就将这个数字打印了一下:结果是2147483647。然后我就将代码中的Integer.MAX_VALUE逐步换成1000000,5000000,……,逐渐逼近这个数,等到换到21亿的时候,我发现还是可以快速执行完毕的。 
然后我就怀疑是Integer.MAX__VALUE属性出现了某种问题,就将其换成了2147483647,还是死循环,看来怀疑错了,问题还是出现在这个数字身上。 
这时候我再一次的检查了一次for循环,重点检查了终止条件,果然是这里出了问题,看我的for循环:

for(int i=0;i<=Integer.MAX_VALUE;i++){
temp = i;
}

只有当i比int最大值大的时候才能结束循环,可问题是…… 
i本身就是int类型的,它怎么可能比int的最大值还大!!! 
for循环运行到 i = Integer.MAX_VALUE ,即 i = 2147483647,i再加1,就变成了-2147483648

(这个地方明白源码,反码,补码的同学已经懂了吧,不明白的等我详细的整理一个专题或者留言询问……请关注我) 
这个负数与int最大值来比较,结果显然,要比最大值小,循环继续执行,重复这个过程,for循环永远都不会执行完毕。

Integer的最大值的更多相关文章

  1. Java中Integer的最大值和最小值

    从JDK1.0开始,Integer中就定义了MIN_VALUE和MAX-VALUE两个常量: /** * A constant holding the minimum value an {@code ...

  2. 怎样记住Integer的最大值(有趣的思维和搞笑的回答)

    前言 今天一个同事问我,数据库里面的某表如果用int做PK,那该表最多可以放多少记录,我说简单啊,就是2^31(正数),跟.NET的Int32.MaxValue一样,约等于20亿(正数)吧.同事说,那 ...

  3. 面试题:Integer和int的区别?在什么时候用Integer和什么时候用int

    /*  * (1) int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为int提供的封装类. * (2)int的默认值为0, 而Integer的默 ...

  4. 由自动装箱和拆箱引发我看Integer源码

    背景和问题 在看别人整理的资料时,看到如下一段代码: package com.sitech.test; /** * 自动装箱和拆箱 jdk1.6 * @author liaowp * */ publi ...

  5. JDK源码分析-Integer

    Integer是平时开发中最常用的类之一,但是如果没有研究过源码很多特性和坑可能就不知道,下面深入源码来分析一下Integer的设计和实现. Integer: 继承结构: -java.lang.Obj ...

  6. [leetcode]经典算法题- String to Integer (atoi)

    题目描述: 把字符串转化为整数值 原文描述: Implement atoi to convert a string to an integer. Hint: Carefully consider al ...

  7. jdk源码阅读笔记-Integer

    public final class Integer extends Number implements Comparable<Integer> Integer 由final修饰了,所以该 ...

  8. String to Integer (atoi) leetcode java

    题目: Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input ca ...

  9. Integer装箱拆箱、参数传递

    拆箱装箱 举个例子 @Test public void testEquals() { int int1 = 12; int int2 = 12; Integer integer1 = new Inte ...

随机推荐

  1. IP代理(proxies参数)

    在爬虫的过程中,我们经常会遇见很多网站采取了防爬取技术,或者说因为自己采集网站信息的强度和采集速度太大,给对方服务器带去了太多的压力. 如果你一直用同一个代理ip爬取这个网页,很有可能ip会被禁止访问 ...

  2. 注册页面的JSON响应方式详细分析(与前端页面交互方式之一)

    控制器层 需求分析: 访问路径:`/user/reg.do` //自己根据功能需求设定的请求参数:`username=xx&password=xx&&phone=xx& ...

  3. Eloquent JavaScript #07# Project: A Robot

    索引 Notes Excercise Measuring a robot Robot efficiency Persistent group 注释即笔记: const roads = [ " ...

  4. java读取文件和写入文件的方式

    https://www.cnblogs.com/fnlingnzb-learner/p/6011324.html

  5. Docker 配置

    1. 网络 使用redsocks 需要配置 iptables -t nat -A PREROUTING -p tcp -j REDSOCKS 还需要使能 route_localnet # settin ...

  6. vfio

    VFIO简介 Documentation/vfio.txt 还是不理解IOMMU.北桥.PCI的MMIO和ioremap file:///C:/Users/shaohefe/Downloads/vt- ...

  7. Eclipse中已安装的插件如何卸载

    最近在Eclipse中安装了一个插件,导致Eclipse使用的时候有些问题,就找了资料,原来Eclipse中的插件也是可以卸载的. 方法是点击菜单“Help”,“Install New Softwar ...

  8. echarts自定义图例legend文字和样式

    话不多说,先上效果图. 要完成这个图并不难,主要是下面那个图例比较难,需要定制. 让我们从官方文档找找思路,官方文档关于legend.formatter是这样的:链接在这 难点在于: 1.这里的图例文 ...

  9. bzoj 3993 星际战争 - 二分答案 - 最大流

    3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或者 ...

  10. java中读取配置文件的方法

    转自:http://blog.csdn.net/stypace/article/details/38414871 一.使用org.apache.commons.configuration 需要使用的是 ...