美文网首页
Java基础 (3) 包装类

Java基础 (3) 包装类

作者: perry_Fan | 来源:发表于2019-02-18 19:37 被阅读0次

思考原生与包装类型的区别。
装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。

Integer i = 10;  //装箱
int n = i;   //拆箱

在装箱的时候自动调用的是Integer的valueOf(int)方法。
而在拆箱的时候自动调用的是Integer的intValue方法。

public static Integer valueOf(int i) {
        if(i >= -128 && i <= IntegerCache.high)
            return IntegerCache.cache[i + 128];
        else
            return new Integer(i);
}

private static class IntegerCache {
        static final int high;
        static final Integer cache[];

        static {                                         // 静态代码块  
            final int low = -128;

            // high value may be configured by property
            int h = 127;
            if (integerCacheHighPropValue != null) {
                // Use Long.decode here to avoid invoking methods that
                // require Integer's autoboxing cache to be initialized
                int i = Long.decode(integerCacheHighPropValue).intValue();
                i = Math.max(i, 127);
                // Maximum array size is Integer.MAX_VALUE
                h = Math.min(i, Integer.MAX_VALUE - -low);
            }
            high = h;

            cache = new Integer[(high - low) + 1];
            int j = low;

            for(int k = 0; k < cache.length; k++)                      // 初始化  
                cache[k] = new Integer(j++);
        }

        private IntegerCache() {}
}

在装箱时,valueOf方法会被自动调用:如果整型字面值在[-128,127]之间,便返回 IntegerCache.cache(在类加载时就自动创建) 中已经存在的对象的引用;否则,创建一个新的Integer对象并返回。

当使用“==”运算符在基本类型和其包装类对象之间比较时,涉及到自动装箱、拆箱机制,遵循如下规则:

  1. 只要两个操作数中有一个是基本类型或表达式(即包含算术运算符),就是比较它们的数值是否相等。
  2. 否则,就是判断这两个对象的内存地址是否相等,即是否是同一个对象。

引用链接:https://blog.csdn.net/justloveyou_/article/details/52651211

相关文章

  • Java基础 (3) 包装类

    思考原生与包装类型的区别。装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。...

  • [Java基础]包装类型

    [Java基础]包装类 了解一下 什么是包装类型在 Java 中, 数据类型总共可以分为2大类 : 基础数据类型和...

  • Java基础-包装类

    为了让基本类型的数据进行更多的操作,java就为每种基本类型提供了对应的包装类类型 byte -------...

  • Java编程基础(11)

    Java编程基础知识:Java内置包装内 1.Java Object类详解:Object类的常用方法(equals...

  • Java 基础 31 包装类

    1.1 基本类型包装类的概述   需求:我要判断一个数据是否在int范围内?要想判断一个数据是否在int范围内,首...

  • Java基础——包装类缓存

    在开始之前,我们先来看一下Java语言规范(JLS7-5.1.7)中的一小段内容: If the value p ...

  • 一起学JDK源码 -- Float类

    前面几篇文章我们看了JAVA基本数据类型整型的包装类,接下来我们看下浮点型float的包装类Float类。 基础知...

  • 包装类

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

  • 1.1包装类型、自动装/拆箱问题

    文 | caesar 永远不安分。 Java基础篇 一.数据类型 1.1包装类型、自动装/拆箱问题 包装类:在ja...

  • JDK 核心 API-java.lang 包

    java.lang 包 1.包装类 2.String类 3.Math类 4.Class类 5.Object类 2....

网友评论

      本文标题:Java基础 (3) 包装类

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