码迷,mamicode.com
首页 > 编程语言 > 详细

java的数据类型

时间:2019-09-06 16:10:51      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:new   box   ima   auto   src   技术   单位   换算   jdk   

基本概念

bit(位)

位是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为“0”或“1”。

byte(字节)

字节是计算机存储容量的基本单位,一个字节由8位二进制数组成。在计算机内部,一个字节可以表示一个数据或者一个英文字母,但是一个汉字需要两个字节表示。

换算

1Byte=8bit
1KB=1024Byte(字节)=8*1024bit
1MB=1024KB
1GB=1024MB

1TB=1024GB

java数据类型

基本数据类型

技术图片

boolean 只有两个值:true、false,可以使用 1 bit 来存储,但是具体大小没有明确规定。JVM 会在编译时期将 boolean 类型的数据转换为 int,使用 1 来表示 true,0 表示 false。

JVM 支持 boolean 数组,但是是通过读写 byte 数组来实现的。

包装类型

 基本类型都有对应的包装类型,基本类型与其对应的包装类型之间的赋值使用自动装箱与拆箱完成。

技术图片

缓存池

new Integer(123) 与 Integer.valueOf(123) 的区别在于:

  • new Integer(123) 每次都会新建一个对象。
  • Integer.valueOf(123) 会使用缓存池中的对象,多次调用会取得同一个对象的引用。

技术图片

valueOf() 方法的实现比较简单,就是先判断值是否在缓存池中,如果在的话就直接返回缓存池的内容。

技术图片

在 Java 8 中,Integer 缓存池的大小默认为 -128~127。

技术图片

 

编译器会在自动装箱过程调用 valueOf() 方法,因此多个值相同且值在缓存池范围内的 Integer 实例使用自动装箱来创建,那么就会引用相同的对象。

基本类型的对应的缓冲池:

  • boolean values true and false
  • all byte values
  • short values between -128 and 127
  • int values between -128 and 127
  • char in the range \u0000 to \u007F

在使用这些基本类型对应的包装类型时,如果该数值范围在缓冲池范围内,就可以直接使用缓冲池中的对象。

Byte、Short、Integer、Long、Char这几个装箱类的valueOf()方法都会做缓存,而Float、Double则不会,原因也很简单,因为byte、Short、integer、long、char在某个范围内的整数个数是有限的,但是float、double这两个浮点数却不是。

在 jdk 1.8 所有的数值类缓冲池中,Integer 的缓冲池 IntegerCache 很特殊,这个缓冲池的下界是 - 128,上界默认是 127,但是这个上界是可调的,在启动 jvm 的时候,通过 -XX:AutoBoxCacheMax=<size> 来指定这个缓冲池的大小,该选项在 JVM 初始化的时候会设定一个名为 java.lang.IntegerCache.high 系统属性,然后 IntegerCache 初始化的时候就会读取该系统属性来决定上界。

 

java的数据类型

标签:new   box   ima   auto   src   技术   单位   换算   jdk   

原文地址:https://www.cnblogs.com/woxbwo/p/11475038.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!