Java基本数据类型

八种基本数据类型

  1. 字符型:char
  2. 布尔型:boolean
  3. 数值型
    1. 整数型:byte,short,int,long
    2. 浮点型:float,double

整数型取值范围

  • byte:byte用1个字节来存储,范围为-128(-2^7)(10000000)到127(2^7-1)(01111111),在变量初始化的时候,byte类型的默认值为0
  • short:short用2个字节存储,范围为-32,768 (-2^15)到32,767 (2^15-1),在变量初始化的时候,short类型的默认值为0
  • int:int用4个字节存储,范围为-2,147,483,648 (-2^31)到2,147,483,647 (2^31-1),在变量初始化的时候,int类型的默认值为0
  • long:long用8个字节存储,范围为-9,223,372,036,854,775,808 (-2^63)到9,223,372,036, 854,775,807 (2^63-1),在变量初始化的时候,long类型的默认值为0L或0l,也可直接写为0

浮点型

位(bit)是衡量浮点数所需存储空间的单位,通常为32位或64位,分别被叫作单精度和双精度。

包装类型

Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class)。

基本数据类型包装类
byte Byte
boolean Boolean
short Short
char Character
int Integer
long Long
float Float
double Double

装箱与拆箱

我们认为包装类是对基本类型的包装,所以,把基本数据类型转换成包装类的过程就是打包装,英文对应于boxing,中文翻译为装箱。

反之,把包装类转换成基本数据类型的过程就是拆包装,英文对应于unboxing,中文翻译为拆箱。

自动装箱与拆箱

    Integer i =10;  //自动装箱
    int b= i;     //自动拆箱  

自动装箱: 就是将基本数据类型自动转换成对应的包装类。

自动拆箱:就是将包装类自动转换成对应的基本数据类型。

自动装箱都是通过包装类的valueOf()方法来实现的.自动拆箱都是通过包装类对象的xxxValue()来实现的。

用到自动装箱的场景

  1. 将基本数据类型放入集合类
  2. 包装类型与基本数据类型进行大小比较
  3. 包装类型的运算
  4. 三目运算符。三目运算符的语法规范。当第二,第三位操作数为基本类型和对象时,其中的对象就会拆箱为基本类型进行操作。
  5. 函数参数与返回值

自动拆装箱与缓存

Integer的操作上引入了一个新功能来节省内存和提高性能。整型对象通过使用相同的对象引用实现了缓存和重用。适用于

  • 适用于整数值区间-128 至 +127。
  • 只适用于自动装箱。使用构造函数创建对象不适用。

自动拆装箱的问题

  • 包装对象的数值比较,不能简单的使用==,虽然-128到127之间的数字可以,但是这个范围之外还是需要使用equals比较。
  • 前面提到,有些场景会进行自动拆装箱,同时也说过,由于自动拆箱,如果包装类对象为null,那么自动拆箱时就有可能抛出NPE。
  • 如果一个for循环中有大量拆装箱操作,会浪费很多资源。

 

posted @ 2020-07-23 21:41  唐新梧  阅读(170)  评论(0)    收藏  举报