Java 数据类型中需要注意的几个小地方

Java 的数据类型有自己的特点,有的地方可能和自己认为的不大一样,所以有必要记一下。
整形
整形的四种类型以及它们的占位、表数范围如下表:
类型占位(bit)范围
byte8-128~127
short16-32 768~32 767
int32-2 147 483 648~2 147 483 647
long64-9 223 372 036 854 775 808~9 223 372 036 854 775 807
  • 当直接把一个较小的整数常量赋给一个 byte 或 short 变量,系统会自动把这个整数常量当成 byte 或者 short 类型来处理。
  • 如果使用一个巨大的整数常量(超出了 int 类型的表数范围)时,Java 不会自动把这个整数常量当成 long 类型来处理。如果希望系统把一个整数变量当成 long 类型来处理,应在这个整数常量后增加 l 或者 L 作为后缀。通常推荐 L,因为字母 l 很容易跟数字 1 搞混。
二进制整数
在 Java 7 中可以使用 0bxx 来表示二进制整数,需要注意的是这里的二进制就是这个数字真正的二进制表示,比如写负数的时候要写出负数的补码。类型确定数字的长度确定,符号位也确定。如下:
byte b = 0b01111111; // b = 127
byte c = (byte)0b11111111; // c = -1
byte d = -0b1; // d = -1
可见,Java 并未希望人们用这种方法来表示补码。
但是转过来说,可能是因为 byte 太短的缘故,那换 short, int 和 long 来分别试试。最终的结果如下:
short s = (short)0b1111111111111111;
int i = 0b11111111111111111111111111111111;
long l = 0b1111111111111111111111111111111111111111111111111111111111111111L;
最终结果所见是这样的,在 byte 和 short 那边 Java 宁可选择了相信它是大一点的数字也不肯相信它是一个负数,或者说是因为 Java 内部的处理机制来决定的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值