美文网首页
Java基本数据类型

Java基本数据类型

作者: 沉淀之际 | 来源:发表于2019-04-22 10:24 被阅读0次

    一、基本数据类型

    char、short、byte、int、long、float、double、boolean

    image.png

    二、基本类型取值范围

    boolean型(布尔型)
    这个类型只有两个值,true和false(真和非真)

    image.png

    三、基本数据类型所占位数及初始值

    image.png

    注意boolean所占位数
    《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。这样我们可以得出boolean类型占了单独使用是4个字节,在数组中又是1个字节。

    虚拟机为什么要用int来代替boolean呢?为什么不用byte或short,这样不是更节省内存空间吗。大多数人都会很自然的这样去想,我同样也有这个疑问,经过查阅资料发现,使用int的原因是,对于当下32位的处理器(CPU)来说,一次处理数据是32位(这里不是指的是32/64位系统,而是指CPU硬件层面),具有高效存取的特点。

    最后的总结:

    根据http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html官方文档的描述:

    boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined.

    布尔类型:布尔数据类型只有两个可能的值:真和假。使用此数据类型为跟踪真/假条件的简单标记。这种数据类型就表示这一点信息,但是它的“大小”并不是精确定义的。

    可以看出,boolean类型没有给出精确的定义,《Java虚拟机规范》给出了4个字节,和boolean数组1个字节的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。这其实是运算效率和存储空间之间的博弈,两者都非常的重要。

    四、数据类型转换

    a、低位转高位自动转,不存在精度丢失

    image.png

    b、高位转低位需要强制转换,将容纳更多信息的数据类型转换成一个容量更小的数据类型,可能存在精度损失的风险,编译器要求程序员进行强制类型转换。

    补充
    1、Integer缓存如何实现的?
    2、字符常量池定义、实现原理、作用?

    相关文章

      网友评论

          本文标题:Java基本数据类型

          本文链接:https://www.haomeiwen.com/subject/jovegqtx.html