Java笔记:自动装箱

一、类型封装器

出于性能考虑,Java并没有放弃基本数据类型,如果总是以对象的形式来使用这些类型,会带来不可接受的开销。虽然基本类型提供了性能的好处,但有时又需要对象的表示形式。例如,基本类型无法以引用的方式传递,Java实现的标准数据结构只能操作对象。为了处理这些情况,Java提供了类型封装器。

二、自动装箱

将数值封装到对象中的过程称为拆箱,从类型封装器中抽取数值的过程称为拆箱。Java已经支持自动装箱和自动拆箱。当需要将基本类型转换为对象时,必然会发生自动装箱。当需要将对象转换为基本类型时,必然会发生自动拆箱。在编写代码时应当合理减少使用类型封装器以免带来不必要的性能开销。

class Solution {
    static int unbox(Integer i) {
        return i;//自动拆箱
    }

    static Integer box(int i) {
        return i;//自动装箱
    }

    public static void main(String[] args) {
        int a = unbox(100);//自动装箱
        Integer b = box(500);
    }
}

原文地址:https://www.cnblogs.com/arseneyao/p/8450434.html

时间: 2024-11-11 16:25:06

Java笔记:自动装箱的相关文章

Java的自动装箱和拆箱

1 public class BoxingDemo { 2 3 public static void main(String[] args) { 4 5 /** 6 * 自动装箱示例: 7 * 基本类型int是不能直接赋值给其包装类对象Integer的,但是这里这条语句可以编译通过 8 * 因为自动装箱原理隐式包含了下面2条语句: 9 * Integer temp = new Integer(1); 10 * int1 = temp; 11 * */ 12 Integer int1 = 1; 1

JAVA学习笔记-自动装箱和自动拆箱(包装类)

自动装箱 基本类型就自动地封装到与它相同类型的包装中,如: Integer i =100; 本质上是,编译器编译时为我们添加了: Integer i =new Integer(100); 自动拆箱 包装类对象自动转换成基本类型数据.如: int a = new Integer(100); 本质上,编译器编译时为我们添加了: int a new Integer(100).intValue(); 缓存问题: 实际上,为了提高效率. 在[-128-127]之间,仍然当做基本数据类型来处理.(但是它仍然

Java 包装类 自动装箱和拆箱

包装类(Wrapper Class) 包装类是针对于原生数据类型的包装. 因为有8个原生数据类型,所以对应有8个包装类. 所有的包装类(8个)都位于java.lang下. Java中的8个包装类分别是:Byte, Short, Integer, Long, Float, Double, Character, Boolean,它们的使用方式都是一样的,可以实现原生数据类型与包装类型的双向转换. 下面以主要Integer类为例说明. Integer Integer类将int类型的值包装到一个对象中.

[读书笔记]自动装箱的陷阱以及==与equals

先看一段代码,来自周志明的<深入理解Java虚拟机>. Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Integer e = 321; Integer f = 321; Long g = 3L; System.out.println(c == d); System.out.println(e == f);//这里有个IntegerCache -128~127的问题 System.out.println(c == (a +

Java中自动装箱与拆箱详解

在讲装箱与拆箱之前我们要先了解一下这个问题的来源: Java中的类型分为基本类型(Primitive type)和类类型(Class type)两种: 基本类型包括byte型.char型.short型.int型.long型.float型.double型.boolean型八种.基本类型指的是直接包含值得类型,可提供语言级别的支持. 类类型包括Byte.Character.Short.Integer.Long.Float.Double.Boolean.为什么要用类类型呢?原因其实很简单,因为Java

了解Java的自动装箱与拆箱

一.简单来说,装箱就是自动将基本数据类型转换成包装器类型:拆箱就是自动将包装器类型转换为基本数据类型. //自动装箱 Integer total = 99; //自动拆箱 int totalprim = total; 需要装箱拆箱的类型有: Integer total = 99;  执行上面那句代码的时候,系统为我们执行了:  Integer total = Integer.valueOf(99); int totalprim = total;  执行上面那句代码的时候,系统为我们执行了:  i

java中自动装箱的问题

package wrapper; public class WrapperDemo { public static void main(String[] args) { Integer a=new Integer(5); Integer b=new Integer(5); System.out.println(a==b); System.out.println(a.equals(b)); /* false true */ Integer c=127;//属于自动装箱 Integer d=127;

Java 基础 - 自动装箱,valueOf装箱,new --&gt;使用 == 和 equals比较

总结 关于equals 比较  记住:equals方法比较的是真正的值 两个包装类比较,比较的是包装的基本数据类型的值 基本数据类型和包装类型比较时,会先把基本数据类型包装后再比较 (但是因为equal比较的还是真正的值,因此最终结果没有影响) double i0 = 0.1; Double i1 = new Double(0.1); Double i2 = new Double(0.1); System.out.println(i1.equals(i2)); //true 2个包装类比较,比较

Java的自动装箱和拆箱的简单讲解

 装箱就是把基础类型封装成一个类.比如把int封装成Integer,这时你就不能把他当成一个数了,而是一个类了,对他的操作就需要用它的方法了. 拆箱就是把类转换成基础类型.比如你算个加法什么的是不能用类的,就得把它转换成基本类型,jdk5以后已经可以自动转换了貌似.基本类型你应该懂的吧 (byte,short,int,long,float,double,boolean,char) byte :java.lang.Byte short :java.lang.Short int: java.lang

java面试---自动装箱

package generic; public class AutoBoxTest { public static void main(String[]args){ Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Integer e = 321; Integer f = 321; Long g = 3L; System.out.println(c==d); System.out.println(e==f); System.o