zoukankan      html  css  js  c++  java
  • 包装类(转)

    包装类(Wrapper Class)

      包装类是针对于原生数据类型的包装。

      因为有8个原生数据类型,所以对应有8个包装类。

      所有的包装类(8个)都位于java.lang下。

      Java中的8个包装类分别是:Byte, Short, Integer, Long, Float, Double, Character, Boolean,它们的使用方式都是一样的,可以实现原生数据类型与包装类型的双向转换。

      下面以主要Integer类为例说明。

     

    Integer

      Integer类将int类型的值包装到一个对象中。

      Integer通过下面这个构造方法构造相应的整型数的对象:

      public Integer(int value);

      public int intValue()方法则返回这个包装类所包装的整型值。

     

    自动装箱/拆箱(Autoboxing/unboxing)

      JDK5.0的一个新特性是自动装箱和自动拆箱。

      自动装箱/拆箱大大方便了基本类型数据和它们包装类的使用。

      自动装箱:基本类型自动转为包装类(int >> Integer)

      自动拆箱:包装类自动转为基本类型(Integer >> int)

      比如下面的例子:

    复制代码
    import java.util.ArrayList;
    import java.util.Collection;
    
    public class BoxTest
    {
        public static void main(String[] args)
        {
            Collection<Integer> c = new ArrayList<Integer>();
        
            c.add(3);//将int类型的3转换为Integer类型并放到集合当中        
        }
    }
    复制代码

    缓存

      下面这个程序很奇怪:

      

    复制代码
    public class BoxTest2
    {
        public static void main(String[] args)
        {
            Integer i1 = 200;
            Integer i2 = 200;
    
            if (i1 == i2)
            {
                System.out.println("i1 == i2");
    
            }
            else
            {
                System.out.println("i1 != i2");
    
            }
        }
    
    }
    复制代码

      当两个数都是100的时候==判断相等,当两个数都是200的时候判断不相等。

      查看内部实现代码可知,Integer类有一个缓存,它会缓存-128~127之间的整数

      当调用valueOf的时候,不会生成新的对象,而是从缓存中取出对象。这样可以提高性能。

      使用构造方法的时候肯定会生成新的对象。

    转载自http://www.cnblogs.com/mengdd/archive/2013/01/21/2869921.html

  • 相关阅读:
    (转载)openwrt nginx
    *** 竞赛中的各种低级错误,及编程常见错误小结 ***
    信息学奥赛辅导经验谈 & 问题教学法中的学生思维能力培养
    数学&数论的一些题
    信息学竞赛中的一些经典思维 (题)
    从权值线段树到主席树
    浅谈莫队算法
    CSP-S 2019提高组训练 服务器需求
    NOIP2019 PJ 对称二叉树
    NOIP2017 PJ 跳房子 —— 单调队列优化DP
  • 原文地址:https://www.cnblogs.com/wgbs25673578/p/4905884.html
Copyright © 2011-2022 走看看