内容部分参考链接:https://blog.csdn.net/wufaliang003/article/details/82347077 (写得更加详细和全面)

 

基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型。

Java是一种强类型语言,第一次申明变量必须说明数据类型。

位(bit) 计算机最小存储单位,存储内容总是0和1。(8bits=1byte,bit不能作为最小寻址单位)。

字节(byte)可以存储所有ASCII所有字符(这是它包含8bits的初衷),-2的8次方到2的8次方-1(-128-127),最小寻址单位。java中内置基础数据类型是字节。

 

字符型

    char(2字节16位 )

数值类型

  整型
    byte(1字节8位)
    short(2字节16位)  
    int(4字节 32位) 
    long (8字节 64位)
  浮点数类型
    float (4字节 32位) 
    double (8字节 64位)

布尔类型

    boolean (1/8字节1位)

实际上,Java中还存在另外一种基本类型void,它也有对应的包装类java.lang.Void,不过我们无法直接对它们进行操作。

包装类(包装类均位于java.lang包)

    在这八个类名中,除了Integer和Character类以后,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写即可。

包装类型和基础类型转换

  jdk1.5后,自动拆装箱

Integer a = 5;//自动装箱
int b = a;//自动拆箱

为什么使用包装类型?

  因为Java是一种面向对象语言,很多地方都需要使用对象而不是基本数据类型。比如,在集合类中,我们是无法将int 、double等类型放进去的。因为集合的容器要求元素是Object类型。为了让基本类型也具有对象的特征,就出现了包装类型,它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。

整型缓存池

  new Integer(123); 每次调用会返回一个新对象。

  Integer.ValueOf(123); 会使用缓存池,多次调用返回同一个对象引用。

  注意:自动装箱使用的Integer.ValueOf(123)。另外整型缓存池范围默认是1byte的范围,也就是超过这个范围是不存缓存池是new的。

  

  (IntegerCache.high=127,IntegerCache.low=-128)

  

        Integer a = 5;//自动装箱
        int b = a;//自动拆箱
        Integer c = new Integer(5);
        Integer d = new Integer(5);
        Integer e = Integer.valueOf(5);
        Integer f = Integer.valueOf(5);
        Integer g = Integer.valueOf(129);
        Integer h = Integer.valueOf(129);
        //a相当于e和f取值于缓存池,而c和d都是创建新对象
        //g,h 超过了整型缓存池范围
        System.out.println(a==c);//false
        System.out.println(a==e);//true
        System.out.println(c==d);//false
        System.out.println(c==e);//false
        System.out.println(e==f);//true
        System.out.println(g==h);//false

 

 posted on 2020-03-15 00:29  いつも何度でも  阅读(304)  评论(0编辑  收藏  举报