美文网首页
java八种包装类

java八种包装类

作者: Ray昱成 | 来源:发表于2019-01-25 17:15 被阅读0次

概述

java中有八种基本类型分别对应八种包装类型,但是包装类里实际存储的值还是使用的基本类型。
例如Interge使用成员变量value记录值 private final int value;

特点

  • 包装类统一继承抽象类Number,并且实现了Comparable接口
  • 包装类都是final,而且成员变量都是static final

构造方式

  • 通过直接赋值 Integer i=1;
  • 构造器 Integer i=new Integer(1);
  • 静态工厂valueOf方法 Integer i=Integer.valueOf(1);

自动拆装箱

  • JVM自动进行的转换,在编译阶段执行,保证不同的写法在运行时是等价的。
  • Integer i=1;执行装箱操作,先调用valueOf方法生成对象,然后将变量i执行它
  • int j=i++;执行拆箱操作,先调用intValue方法拿到值,然后将其+1操作

缓存

除了Float和Double,其余六种包装类自身都包含有内部缓存,使用内部缓存类cache,来初始化缓存。调用valueOf方法时,会先匹配缓存,如果无法命中,则执行new实例。

缓存范围如下:

  • Byte 全部被缓存,即[-128,127]
  • Short和Long [-128,127]
  • Character [0,127]
  • Integer [-128,127]
  • Boolean TRUE/FALSE

值得注意的是,在执行拆装箱操作时,缓存是有效的,代码如下

       //自动装箱,缓存有效
        Integer i=127;
        Integer j=Integer.valueOf(127);
        System.out.println(j==i); //true

        //自动装箱,没有匹配缓存
        Integer a=Integer.valueOf(128);
        Integer b=128;
        System.out.println(a==b);//false

效率

  • 绝大多数情况区别不大,但尽量避免无意的装拆箱操作。
  • 在性能敏感的场景下,处理大量数据的开销,比如几十万个整数,这种时候使用基本类型用来代替包装类是比较合适的,或者使用数组代替List,因为数组类是JVM编译创建的.

hashcode

因为包装类hashCode是基于其自身value值计算的,所以不同方式构造出来的包装类只要其value样,则hashCode也一定相同。

使用场景

  • 原始基本类型不使用与集合或者枚举中,所以有一定的局限性
  • 在javabean里面最好使用Integer来定义,因为Integer值默认为null,这样使用变量值的时候如果不赋值则会出错,可以有效的识别出来。

相关文章

  • 包装类

    包装类 1. 什么是包装类 包装类(Wrapper Class): Java是一个面向对象的编程语言,但是Java...

  • JavaSE进阶五 包装类

    java中的包装类 java中对8种基本数据类型提供了8种包装类型;包装类是引用类型,父类是Object。 为什么...

  • JAVA:包装类

    包装类:  Java中的包装类包括:Integer、Long、Short、Byte、Character、Doubl...

  • java——包装类

    为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据的操作。 用于描述该对象的类就称...

  • Java包装类

    导语 学完包装类就懂的情书。 主要内容 基本数据类型包装类的定义 数据的装箱与拆箱操作 数据类型的转换(核心) 具...

  • JAVA—包装类

    一、技术总结1、以Integer为例,创建包装类Integer ig=new Integer(10); //in...

  • Java包装类

    尽管 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,即基本类型的数据不具备...

  • java包装类

    java包装类是为了解决java基本类型在面向对象过程中的一些不足。如,java基本类型不能存储在集合类型中(如L...

  • java包装类

    转自(侵删):https://blog.csdn.net/sinat_30973431/article/detai...

  • Java包装类

    包装类 装箱:把基本数据类型转换成包装类 拆箱:把包装类转换成基本数据类型 基本数据类型和字符串之间的转换

网友评论

      本文标题:java八种包装类

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