【当年笔记】包装类型与基本数据类型

1.Java有8种基本数据类型  

数据类型 含义 默认值 取值范围 包装类
boolean 布尔类型 false false/true
Boolean
byte 字节 0 -128~127
Byte
char 字符型 '\u0000' ~ '\uFFFF'
Character
short 短整型  0(short)

-2^15~2^15-1

 
 int  整型  0  -2^31~2^31-1
Integer 
long  长整型  0L   -2^63~2^63-1
Long
 
float
 
单精浮点型
0.0f   
1.4e-45 到 3.4e+38
Float
 
double
 
双浮点型
 
0.0d
 
4.9e-324 到 1.798e+308
Double

 

2.包装类型

  Java的核心思想之一就是Everything Is an Object,基本数据类型也不例外,因此Java提供了基本数据类型的包装类。可以使数据完成一些对象操作,如获取

 hashCode、序列化等

3.高频区间的数据缓存

以 Integer 为例来说,在数值区间为 -128~127

时,会直接复用已有对象,在这区间之外的数字才会在堆上产生。 对应的源码如下

public static Integer valueOf(int i) {
      if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
      return new Integer(i);
    }

  

各包装类高频区域的取值范围:

  * Boolean:使用静态 final 定义,就会返回静态值
  * Byte:缓存区 -128~127
  * Short:缓存区 -128~127
  * Character:缓存区 0~127
  * Long:缓存区 -128~127
  * Integer:缓存区 -128~127
  * Float 和 Double 不会有缓存,其他包装类都有缓存。
因此所有包装类对象之间的值比较使用 `equals()` 方法,因为超出缓存范围 ,会存在数值相同而内存地址不同的情况,用“==”返回false。
  * Integer 是唯一可以修改缓存范围的包装类,在 VM optons 加入参数例如: -XX:AutoBoxCacheMax=1000 即修改缓存最大值为 1000

4 自动拆箱和自动装箱

自动装箱:基本类型的数据处于需要对象的环境中时,会自动转为“对象”。
自动拆箱:每当需要一个值时,对象会自动转成基本数据类型,没必要再去显式调用。
 

5.基本数据类型自动转换

精度低的可以向精度高的自动转换、精度高的不能像精度低的转换
byte、short、char不可以相互转换、但是可以运算 运算时会转换成int类型

自动转换规则:

char-->int-->long-->float-->double

byte-->short-->int-->long-->float-->double

当年学习时记的笔记,偶然整理翻到,整理一下发布出来,也算追忆一下青春吧

posted @ 2022-05-27 15:57  正文儿  阅读(54)  评论(0编辑  收藏  举报