本文作者:ptiyny

java语言基本常量 java语言常量有几种

ptiyny 05-14 33
java语言基本常量 java语言常量有几种摘要: 大家好,今天小编关注到一个比较有意思的话题,就是关于java语言基本常量的问题,于是小编就整理了1个相关介绍java语言基本常量的解答,让我们一起看看吧。请教java小问题?请教j...

大家好,今天小编关注到一个比较意思的话题,关于java语言基本常量问题,于是小编就整理了1个相关介绍Java语言基本常量的解答,让我们一起看看吧。

java语言基本常量 java语言常量有几种
图片来源网络,侵删)
  1. 请教java小问题?

请教java小问题?

首先需要知道 :

在JDK中,整形类型是有范围的,最大值integer.MAX_VALUE,即2147483647,最小值为Integer.MIN_VALUE -2147483648。

因此 i=Integer.MIN_VALUE 即 i = -2147483648;

然后i-1 溢出了, 所以结果为 21474837;

java语言基本常量 java语言常量有几种
(图片来源网络,侵删)

i-1L 这里的结果应该为long长整型,因此 i-1L 的结果为 -2147483649;

最后 21474837 与 -2147483649的和为-2。

因此结果为-2。

答案是-2。为什么这样呢,因为i取Integer的最小值是个常数,也就是int的最小值-2147483648,减1,发生溢出,变为21474837。这应该很好理解,但减去1l呢,这里会用long类型接收结果,不发生溢出就是-2147483649和为-2。建议题主遇到这样的问题自己动动手,把每一步结果输出一下记忆更深刻

java语言基本常量 java语言常量有几种
(图片来源网络,侵删)

这个问题看似简单,但如果不实际测试可能还真会搞错,最好的办法是写个Demo将各个值输出,就能揣摩出其中的意思,咱们结合程序及输出来分析下:

在Java中整形是有数据范围的,其中最小值:Integer.MIN_VALUE是-2147483648。如果在此基础上再减1,就会出现溢出现象,从输出结果看已经变成:2147483647。而(i-1L)返回是long长整形,再减去1,不会发生溢出正常计算,结果是:-2147483649。

(i-1):2147483647

(i-1L):-2147483649

所以,(i-1) + (i-1L)结果就是:-2。

首先要了解,所有的有符号运算(正负)都是使用二进制补码进行加减运算的,先运算i-1,因为i是int得最小值,转换为二进制,二进制所有位是1000000000......再转换成补码1111111...,再给补码-1,然后再转换成源码,然后就会数值溢出成了1011111....33位.那然后计算机对数据进行截取,int得长度为32位,就会从0截取。这样就成了int得最大值。

而最小值-1L,在编译时候,编译器会对最小值向上自动转换,转成long型,此时就成了int最小值变成long后+1,

这样2个数据想加就成了-2

值为-2

1. int 的取值区间:

最大值为 2147483647,最小值为 -2147483648。

2. int 溢出特性:

正数过大溢出为负数,负数过小溢出为正数,

即,最大值 2147483647 再增 1 得到 -2147483648,

同理,最小值 -2147483648 再减 1 得到 2147483647

3. 整数直接量默认为 int 型:

如:1、2、99、56 ... ,整数直接量默认都是 int 类型

4. 不同数据类型之间做数学运算:

到此,以上就是小编对于java语言基本常量的问题就介绍到这了,希望介绍关于java语言基本常量的1点解答对大家有用。

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享