Java基本数据类型の整型

通常所说的整型,实际指的是如下四种类型:

>byte:一个byte类型整数在内存里占8位。表数范围:2的-7次方-2的7次方-1

>short:一个short类型整数在内存里占16位。表数范围:2的-15次方-2的15次方-1

>int:一个int类型整数在内存里占32位。表数范围:2的-31次方-2的31次方-1

>long:一个long类型整数在内存里占64位。表数范围:2的-63次方-2的63次方-1

int是最常用的整数类型,因此在通常情况下,直接给出一个整数值默认就是int类型。除此之外,有如下两种情形必须指出:

>如果直接将一个较小的整数值(在byte或short类型的表数范围内)赋给一个byte或short变量,系统会自动把这个整数值当成byte或short类型来处理。

>如果使用一个巨大的整数值(超出了int类型的表数范围)时,Java不会自动把这个整数值当成long类型来处理。如果希望系统把一个整数值当成long类型来处理,应在这个整数值后增加l或者L作为后缀。通常推荐使用L,因为英文字母l很容易跟数字1搞混。

//下面代码是正确的,系统会自动把56当成byte类型处理
byte a = 56;
//下面代码是错误的,系统不会把9999999999999当成long类型处理
//所以超出int的表数范围,从而引起错误
long bigValue = 9999999999999;
//下面代码是正确的,在巨大的整数值后使用L后缀,强制使用long类型
long bigValue2 = 9999999999999L;
可以把一个较小的整数值(在int类型的表数范围之内)直接赋给一个long类型的变量,这并不是因为Java会把这个较小的整数值当成long类型来处理,Java依然把这个整数值当成int类型来处理,只是因为int类型的值会自动类型转换到long类型。
Java中整数值有4中表示方式:十进制、二进制、八进制和十六进制,其中二进制的整数以0b或0B开头;八进制的整数以0开头;十六进制的整数以0x或0X开头,其中10-15分别以a-f(此处的a-f不区分大小写)来表示。

整数值默认是int类型,因此使用二进制形式定义整数时,二进制整数默认占32位,其中第32位是符号位,如果在二进制整数后添加l或L后缀,那么这个二进制整数默认占64位,其中第64位是符号位。

例如如下程序:

/*
定义一个8位的二进制整数,该数值默认占32位,因此它是一个正数
只是强制类型转换成byte时产生了溢出,最终导致bigValue4变成了-23
*/
byte bigValue4 = (byte)0b11101001;
/*
定义一个32位的二进制整数,最高位是1
但由于数值后添加了L后缀,因此该整数实际占64位,第32位的1不是符号位
因此bigValue5的值等于2的31次方+2+1
*/
long bigValue5 = 0B10000000000000000000000000000011L;
System.out.println(bigValue4);  //输出-23
System.out.println(bigValue5);  //输出2147483651


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值