Integer的最大值
来自: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的最大值的更多相关文章
- Java中Integer的最大值和最小值
从JDK1.0开始,Integer中就定义了MIN_VALUE和MAX-VALUE两个常量: /** * A constant holding the minimum value an {@code ...
- 怎样记住Integer的最大值(有趣的思维和搞笑的回答)
前言 今天一个同事问我,数据库里面的某表如果用int做PK,那该表最多可以放多少记录,我说简单啊,就是2^31(正数),跟.NET的Int32.MaxValue一样,约等于20亿(正数)吧.同事说,那 ...
- 面试题:Integer和int的区别?在什么时候用Integer和什么时候用int
/* * (1) int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为int提供的封装类. * (2)int的默认值为0, 而Integer的默 ...
- 由自动装箱和拆箱引发我看Integer源码
背景和问题 在看别人整理的资料时,看到如下一段代码: package com.sitech.test; /** * 自动装箱和拆箱 jdk1.6 * @author liaowp * */ publi ...
- JDK源码分析-Integer
Integer是平时开发中最常用的类之一,但是如果没有研究过源码很多特性和坑可能就不知道,下面深入源码来分析一下Integer的设计和实现. Integer: 继承结构: -java.lang.Obj ...
- [leetcode]经典算法题- String to Integer (atoi)
题目描述: 把字符串转化为整数值 原文描述: Implement atoi to convert a string to an integer. Hint: Carefully consider al ...
- jdk源码阅读笔记-Integer
public final class Integer extends Number implements Comparable<Integer> Integer 由final修饰了,所以该 ...
- String to Integer (atoi) leetcode java
题目: Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input ca ...
- Integer装箱拆箱、参数传递
拆箱装箱 举个例子 @Test public void testEquals() { int int1 = 12; int int2 = 12; Integer integer1 = new Inte ...
随机推荐
- php_study progress(1)
PHP是一种语法简单.功能强大的网络编程语言.在语法格式上,PHP借鉴了广泛流行的C.Java和Perl等编程语言的特点,非常类似于C语言,但比C语言更简单,易学和易用,因此特别适合于学习过C语言,有 ...
- Kattis之旅——Rational Arithmetic
Input The first line of input contains one integer, giving the number of operations to perform. Then ...
- C调用java JNI_CreateJavaVM只能调用成功一次
https://bbs.csdn.net/topics/392264971 再使用c语言调用java代码的时候,选择使用JNI,根据网上的提示已经能够正常跑了,int mask_name( char* ...
- Linux学习笔记之Linux 让进程在后台可靠运行的几种方法
0x00 概述 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败.如何让命令提交后不受本地关闭终 ...
- P1501 [国家集训队]Tree II(LCT)
P1501 [国家集训队]Tree II 看着维护吧2333333 操作和维护区间加.乘线段树挺像的 进行修改操作时不要忘记吧每个点的点权$v[i]$也处理掉 还有就是$51061^2=2607225 ...
- oracle 11g禁用和强制direct path read
一般在混合型环境中,大表在进行全表扫描或者走并行的时候一般会出现direct path read等待事件,如果在OLTP或者纯粹的DSS环境中,出现大量的direct path read直接路径读取, ...
- 02: djangorestframework使用
1.1 djangorestframework登录.认证和权限 1.认证与权限相关模块 # -*- coding: utf-8 -*- from django.utils import six fro ...
- JQuery 实现 倒计时 按钮具体方法
<head> <title>test count down button</title> <script src="http://ajax.aspn ...
- javaScript中ajax、axios总结
一.原生js实现ajax请求: 步骤: get请求: // 1.创建一个XMLHttpRequest的对象. var xml=null; //初始值设为空 if(XMLHttpRequest){ xm ...
- 尚硅谷面试第一季-10SpringMVC的工作流程
目录结构: 关键代码: web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xml ...