Java中八种基础数据类型各占多少字节和取值范围

Java中的八种基础数据类型是我们日常一直在使用中,这篇文章就用来复习和巩固该基础知识。

一、详解

基本类型字节区间默认值
byte(位)1字节=8bits-128~1270
short(短整数)2字节=16bits-32768~327670
int(整数)4字节=32bits-2147483648~21474836470
long(长整数)8字节=64bits-9223372036854774808~92233720368547748070
float(单精度)4字节=32bits3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)0
double(双精度)8字节=64bits1.797693e+308~ 4.9000000e-3240
char(字符)2字节=16bits0~65535
boolean(布尔值)1字节=8bitsture~falsefalse

二、取值区间的计算方法(以1byte为例)

方便理解,可以通过如下三种来网上的方式来进行理解区间的计算。
(1)方式一:
因为1byte表示256个数(用一个字节(8位)表示出来(2^8=256)),所以有人将其拆开正负各一半,即-128~127(这个是127而不是128是因为0也是正数啊,所以划分后128变127了)。

(2)方式二:
1111 1111表示的是-1,而不是-128;
  首先,因为要表示出负数,所以它的最高位是符号位。0表示正数,1表示负数;如:127是0111 1111这样表示的。-128是1000 0000这样表示的。127后面是-128,最大的正数加下来是最小的负数。这就跟钟表一样,12点钟后面是1点中钟一样。因为它是用补码的编码方式。

正数的补码就是它的原码,也就是单纯的二进制数。负数的话,看下面例子:
  1111 1111这个二进制串,首先它最高位是1,明确他是个负数。那么其余位是111 1111,按位取反得到:000 0000,再加1就是:000 0001也就是1,再加上符号位。最终结果是-1。
  
(3)方式三:
  你可以这样想,第一位符号位我们暂时不去考虑,那么剩下的七位组成的最小值为多少?就是000,0000,这时将符号位添加1000,0000不就是最小的数了(因为1是负号啊),这时转化为十进制得出-128。

基本数据类型也会涉及到一些转换的问题,可查阅我如下的几篇文章进行学习:
《Java中的隐式类型转换和显式类型转换》
《二进制、八进制、十六进制和十进制的相互转换》
《原码、补码、反码概念及相互转换问题》

不负时光,时光定不负你。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值