首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中包装器和自动装箱/取消装箱有什么区别?

在java中包装器和自动装箱/取消装箱有什么区别?
EN

Stack Overflow用户
提问于 2015-12-09 07:46:02
回答 2查看 4.8K关注 0票数 1

Wrapper类用于将原语转换为对象,将对象转换为原语。类似地,通过使用AutoboxingUnboxing,我们可以做同样的事情,那么这两种方法的区别是:1-概念明智,2-代码明智?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-09 08:01:01

自动装箱和自动反装箱只是编译器默默地帮助您创建和使用原始包装对象。

例如,int基元类型有名为Integer的包装类。您可以按以下方式包装和展开:

代码语言:javascript
复制
int myInt = 7;

// Wrap the primitive value
Integer myWrappedInt = Integer.valueOf(myInt);

// Unwrap the value
int myOtherInt = myWrappedInt.intValue();

有了自动装箱和自动拆箱,你就不用做那些锅炉板的事了:

代码语言:javascript
复制
int myInt = 7;

// Wrap the primitive value
Integer myWrappedInt = myInt; // Compiler auto-boxes

// Unwrap the value
int myOtherInt = myWrappedInt; // Compiler auto-unboxes

这只是一个语法糖,由编译器处理。生成的字节码是相同的。

票数 7
EN

Stack Overflow用户

发布于 2020-02-02 14:15:46

java中的包装类提供了将原语转换为对象和将对象转换为原语的机制。而自动装箱和取消装箱允许您自动完成该转换。自java 5以来,自动装箱和自动取消装箱在Java中是合法的。

代码语言:javascript
复制
public class Main {

    public static void main(String[] args) {
        int x=100;
        Integer iob;
        iob=x;//illegal upto JDK1.4
        iob= Integer.valueOf(x); //legal=> Boxing,Wrapping
        iob=x; //Legal since JDK1.5=> Auto Boxing

    }
}

这里x是一个原始变量,iob是一个参考变量。所以只有一个地址可以分配到这个iob引用中。iob=Integer.valueOf(x)将将原始整数转换为整数对象。这种转换可以暗示为包装。iob=x也会做同样的事情。它还节省了大量的编码。

代码语言:javascript
复制
public class Main {

    public static void main(String[] args) {
        Integer iob= new Integer(100);
        int x;

        x=iob;//illegal upto JDK1.4
        x=iob.intValue(); //unboxing,unwrapping

        x=iob; //legal since JDK1.5=> auto unboxing 

    }
}

在这里,iob.intValue()将接受整数对象的值,并将该值赋值给x。x=iob做同样的事情,除非您不需要编写转换代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34173337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档