前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java int 最大值 最小值

Java int 最大值 最小值

作者头像
week
发布2018-12-12 16:35:13
4.7K0
发布2018-12-12 16:35:13
举报
文章被收录于专栏:用户画像用户画像

从JDK1.0开始,Integer中就定义了MIN_VALUE和MAX-VALUE两个常量:

代码语言:javascript
复制
/**
 * A constant holding the minimum value an {@code int} can
 * have, -2<sup>31</sup>.
 */public static final int   MIN_VALUE = 0x80000000;

/**
 * A constant holding the maximum value an {@code int} can
 * have, 2<sup>31</sup>-1.
 */public static final int   MAX_VALUE = 0x7fffffff;

Q1:谁能给解释一下,这两个常量为什么会分别定义成0x80000000和0x7fffffff。 Q2:java.lang.String的最大长度是多少? Q3:如下代码能抛出异常吗?为什么

int x = Integer.MAX_VALUE+10; if(x >= Integer.MAX_VALUE || x <= Integer.MIN_VALUE){ //throw exception} Q1:计算机能理解的东西是二进制的01串。在计算机内部数值的二进制表示,有正码、反码和补码。一般采用二进制补码进行表示和运算,MIN_VALUE = 0x80000000 和 MAX_VALUE = 0x7fffffff 就是补码表示的Integer的最小值(-2^31)和最大值(2^31-1)。至于为什么采用补码表示,简单的说就是方便运算,详细可自行Google一下或找本基础教材翻一下。至于Integer的最大值最小值为什么是这两个数,这是因为Java语言规范规定int型为4字节,不管是32/64位机器,这就是其所宣称的跨平台的基础部分。

Q2:String的最大长度取决于其内部数据表示。String内部是通过char数组表示,数组的长度在Java中限制为一个int型所能表示的最大值,即Q1中的 MAX_VALUE = 0x7fffffff 。这点通过其内部表示偏移量int offset和长度int count的属性可以体现。

Q3:上述代码不会抛出异常,对于超出表示范围的数值,采取的策略是截断效应,即直接截取低位,抛弃超出范围的高位信息,这就是所谓的溢出。例如int型的运算结果若超出表示范围,则直接截取低32位(Q1中4个字节)作为运算结果。由此,上述代码第1行会溢出,溢出后的结果导致第2行的条件判断为假。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档