Java八大基本数据类型总结

对应关系

关于Java的8种基本数据类型,其名称、位数、默认值、取值范围及示例如下表所示:

序号数据类型位数字节数默认值取值范围举例说明
1byte(位)810-2^7 - 2^7-1byte b = 10;
2short(短整数)1620-2^15 - 2^15-1short s = 10;
3int(整数)3240-2^31 - 2^31-1int i = 10;
4long(长整数)6480-2^63 - 2^63-1long l = 10l;
5float(单精度)3240.0-2^31 - 2^31-1float f = 10.0f;
6double(双精度)6480.0-2^63 - 2^63-1double d = 10.0d;
7char(字符)1620 - 2^16-1char c = ‘c’;
8boolean(布尔值)81falsetrue、falseboolean b = true;

注意: boolean的 字节数有争议,有人说 1 bit ,有人说 1 byte , 也有人说 4 bytes ,stackoverflow上的讨论是依赖于JVM, 详细文章请见 拼多多面试官:在Java中boolean类型占多少字节?大多数人都回答错了

boolean总结

1.boolean 类型被编译成 int 类型来使用,占 4 个 byte 。
2.boolean 数组被编译成 byte 数组类型,每个 boolean 数组成员占 1 个 byte
3.在 Java 虚拟机里,1 表示 true ,0 表示 false 。
4.这只是 Java 虚拟机的建议。
5.可以肯定的是,不会是 1 个 bit 。

测试取值范围

package com.ce.test;

class Test {
    static byte b;
    static short s;
    static int i;
    static long l;
    static float f;
    static double d;
    static char c;
    static boolean bo;

    public static void main(String[] args) {

      System.out.println("byte的大小:"+Byte.SIZE
              +";默认值:"+b
              +";数据范围:"+Byte.MIN_VALUE+" - "+Byte.MAX_VALUE);

      System.out.println("short的大小:"+Short.SIZE
              +";默认值:"+s
              +";数据范围:"+Short.MIN_VALUE+" - "+Short.MAX_VALUE);

      System.out.println("int的大小:"+Integer.SIZE
              +";默认值:"+i
              +";数据范围:"+Integer.MIN_VALUE+" - "+Integer.MAX_VALUE);

      System.out.println("long的大小:"+Long.SIZE
              +";默认值:"+l
              +";数据范围:"+Long.MIN_VALUE+" - "+Long.MAX_VALUE);

      System.out.println("float的大小:"+Float.SIZE
              +";默认值:"+f
              +";数据范围:"+Float.MIN_VALUE+" - "+Float.MAX_VALUE);

      System.out.println("double的大小:"+Double.SIZE
              +";默认值:"+d
              +";数据范围:"+Double.MIN_VALUE+" - "+Double.MAX_VALUE);

      System.out.println("char的大小:"+Character.SIZE
              +";默认值:"+c
              +";数据范围:"+Character.MIN_VALUE+" - "+Character.MAX_VALUE);

      System.out.println("boolean的大小:"+Byte.SIZE
              +";默认值:"+bo
              +";数据范围:"+Byte.MIN_VALUE+" - "+Byte.MAX_VALUE);

    }
}

在这里插入图片描述 此处为什么输出char的数据范围不是0 - 65535呢? Java中的char类型由两个字节即十六位来表示,因为是无符号数,所以为2的16次方,数值范围就为:0 - 2^16-1

详细说明

  • 八大基本数据类型

byte 1字节 、 short 2字节 、int 4字节 、long 8字节 、float 4字节精确到7位有效数字 、 double 8字节 、char 2字节 、boolean 1字节或4字节取决于JVM、引用类型4字节或8字节(在64位平台上,占8个字节,在32位平台上占4个字节,指针压缩4个字节) 1个字节表示8位

  • 整形常量默认是int类型

十进制 正常、八进制 0开头、十六进制 0x开头、二进制 0b开头

  • 类型的转换

    • 自动转换:

      转换规则:从存储范围小的类型到存储范围大的类型。

      具体规则为:byte→short(char)→int→long→float→double(当中long转成float时可能会造成存储精度的损失)

    • 强制转换:

      强制类型转换,也称显式类型转换,是指必须书写代码才能完成的类型转换。该类类型转换很可能存在精度的损失,所以 必须书写相应的代码,并且能够忍受该种损失时才进行该类型的转换。转换时必须保证强转后的值在强转类型的存储范围之中,否则会出现内存溢出导致程序出现异常。

      转换规则:从存储范围大的类型到存储范围小的类型。

      具体规则为:double→float→long→int→short(char)→byte

      语法格式为:(转换到的类型)需要转换的值

      double d=3.14;
      int i=(int) d;
      

      注意问题:强制类型转换通常都会存储精度的损失,所以使用时需要谨慎。

参考

1. Java的8种基本数据类型
2. 八大数据类型对应的字节数
3.拼多多面试官:在Java中boolean类型占多少字节?大多数人都回答错了
4.java的引用类型所占用的内存空间
5.JVM-对象的指针压缩

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值