zoukankan      html  css  js  c++  java
  • java包装类简析

    对于8个基本类型,java提供了他们相应的包装类:

    基本类型 包装类

    byte java.lang.Byte

    short java.lang.Short

    int java.lang.Integer

    long java.lang.Long

    float java.lang.Float

    double java.lang.Double

    char java.lang.Character

    boolean java.lang.Boolean

    其中除了Character与Boolean的父类是Object之外,其余的都是继承自:java.lang.Number

    在Java中,抽象类 Number 是 BigDecimal、BigInteger、Byte、Double、Float、Integer、Long 和 Short 类的超类。该类提供了六个方法,如图-1所示。

    图- 1

    以上六个方法中,floatValue方法和doubleValue方法在使用时,可能涉及到舍入;其它四个方法可能涉及到舍入或者取整。

    例如  Number a = 123;

        Number b = 123.123;

        int c = a.intValue();

        double d = b.doubleValue();//此时可以通过某一类型Value()方法,把Number类型的对象转成基本类型。

    )2包装类和基本类型之间的转化

      )2.1 基本类型转为包装类 : 包装类.ValueOf();方法

        例如 :int a = 20;

            Integer b = Integer.valueOf(a); //可以把基本类型转化为包装类。 当然这个方法的参数还可以为可以表达为数字的string对象。读api

      )2.2包装类转基本类型:包装类的 基本类型Value()方法。且一个包装类是可以被转化为多个基本类型的,例如Integer中就有intValue();doubleValue();longValue();等等

        例如

          Integer a = 123;

          int b = a.intValue();

          double c = a.doubleValue();

    )3.包装类中将可以转化为该类的字符串对象进行转化的静态方法():继承Number的包装类的6个数字子类,都有将字符串转为自身对象的方法

        包装类  parse包装类(字符串);

    随便一提,把其他包装类的对象转化为字符串的方法,一般用String中定义的valueOf;

    )4.那么java是如何实现的自动拆装箱呢?

    事实上JVM不支持该特性,自动拆装箱只是编译器在编译过程中的"预处理"操作。编译器在看到需要在包装类与基本类型之间转换时,会在编译为字节码时进行改变:

    源代码中 编译后的字节码中

    Integer a = 100 => Integer a = Integer.valueOf(100);

    Integer b = 200 => Integer b = Integer.valueOf(200);

    Integer c = a+b => Integer c = Integer.valueOf (a.intValue( ) + b.intValue( ));

    double d = c => double d = c . doubleValue( );

  • 相关阅读:
    2018-5-30 总结
    【数据结构系列】线段树(Segment Tree)
    Google Summer of Code 2017 经验谈
    二分查找
    Binary Indexed Tree
    Github-flavored Markdown 导出为 PDF
    Programming Languages
    Select 选择算法
    取样算法
    HTTP Status 500-Servlet.init() for servlet [springmvc] threw exception解决办法
  • 原文地址:https://www.cnblogs.com/exceptionblog/p/7980261.html
Copyright © 2011-2022 走看看