Java中8大基本数据类型

1.八大基本数据类型

序号名称字节数(byte)位数(bit)默认值取值范围
1short(短整型)2160-215~215-1
2int(整型)4320-231~231-1
3long(长整型)8640-263~263-1
4float(单精度)4320.0-231~231-1
5double(双精度)8640.0-263~263-1
6char(字符)2160~216-1
7byte(长整型)180-27~27-1
8boolean(布尔型)18falseture、false

注意:

  • 不带后缀的整数默认为 int,不带后缀的小数默认为 double
  • 超出 int 取值范围的整数必须添加后缀 L或者l,表示 long 类型。建议使用L,因为l容易与数字 1 混淆
  • 带有F或f后缀的数都属于 float 类型,带有D或d后缀的数都视为 double 类型
  • 编译器会在编译期检查八种基本类型的取值范围,如果超出了范围会报错
  • int 值可以赋值给所有数值类型;
  • long 值可以赋值给 long、float、double类型,为什么 long 值占 8 个字节可以赋值给只占 4 个字节的 float 呢?这是因为赋值时会自动舍弃精度并转换为科学计数法。如:Long.MAX_VALUE: 9223372036854775807,赋值给 float,变为:9.223372E18
  • float 值可以赋值给 float、double 类型
  • double 值只能赋值给 double 类型
  • 浮点数并不适合用于精确计算,而适合进行科学计算。在《Effective Java》这本书中也提到这个原则,float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用java.math.BigDecimal。使用BigDecimal并且一定要用String来够造。

2. 计算机中存储数据的原理

  1. 原码
    int型数据在计算机中以二进制存储,一个int型数据占4个字节,一个字节占8位,一共32位。
    (1)第一位是标志位,标志位为0表示正数,标志位为1表示负数。
    (2)剩余的31位是用来表示数字部分的

  2. 补码
    在计算机中,数字以补码存储。正数的补码是其本身,负数的补码是除标志位外,其他位按位取反再加一。

  3. 补码的特性
    1、一个负整数(或原码)与其补数(或补码)相加,和为模。
    2、对一个整数的补码再求补码,等于该整数自身。
    3、补码的正零与负零表示方法相同。

3.为什么int型数据取值范围是[-231~231-1]

计算机存储数字时,第一位是标志位,只有31位用来存储数字的值。所以最大表示的正数为0111 1111 1111 1111 1111 1111 1111 1111,即:-231-1
对于负数,当存储数字的31位均为1时,值为231-1,加上标志位1,此时的负数原码为:
1111 1111 1111 1111 1111 1111 1111 1111
对应的补码为:
1000 0000 0000 0000 0000 0000 0000 0001
用类似的表示方法可以表示出[ -231-1,~231-1]中的数,但是如果这么计算的话,1000 0000 0000 0000 0000 0000 0000 0000 这个数字就被浪费了。对于计算机宝贵的内存,浪费是绝对不允许的,所以1000 0000 0000 0000 0000 0000 0000 0000这个数字就被规定为表示 -231
。所以int型数据取值范围是[-231~231-1]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值