2 cai642343061 cai642343061 于 2016.04.26 15:32 提问

java基础:合法转换与自动装箱、拆箱

Short y = 100;
int z = y;
这两句代码编译正确,但为什么呢?是y先拆箱成short,然后合法转换成int吗?

short y1 = 100;
Integer z1 = y1;
而这两句代码编译报错,如果按照上面的逻辑,可以y1先合法转换int,然后自动装箱成Integer呀?

2个回答

w172087242
w172087242   Ds   Rxr 2016.04.26 17:46
已采纳

涉及到隐式转换。
对非引用类型赋值的时候,对基本数据类型会进行自动拆箱,然后可以隐式转换为大类型;
如第一种。

而引用类型则是先装箱再赋值,这时候两个引用类型分别是Integer和Short。
这两个类型是不能隐式转换的。
所以第二种编译不通过。

cai642343061
cai642343061 嗯嗯,谢了
大约 2 年之前 回复
w172087242
w172087242 回复言惜: 对的
大约 2 年之前 回复
cai642343061
cai642343061 谢谢你的回答,不好意思这么晚才回复你,如果总结这两种情况,是不是可以说:先进行装箱/拆箱,再进行隐式转换 ?
大约 2 年之前 回复
CSDNXIAOD
CSDNXIAOD   2016.04.26 17:22

java基础之自动装箱和拆箱
Java基础之包装类的自动装箱和拆箱详解
Java基础复习:自动装箱&自动拆箱
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java基础之包装类的自动装箱和拆箱详解
定义 在java中,数据类型可以分为两大类,即基本数据类型和引用数据类型,基本数据类型的数据不是对象,所以对于要将数据类型作为对象来使用的情况,java提供了相对应的包装类。(关于包装类的详细介绍请参看博客Java基础之常用类详解) 本篇博客主要讲述包装类的自动装箱和拆行机制。所谓装箱,就是把基本数据类型用它们相对应的引用类型包起来,使它们可以具有对象的特质,如我们可以把int类型包装成Inte
Java中的基本类型与封装类型以及自动装箱、拆箱
Java中的类型分为原始类型和对应的封装类型(装箱类型),基本类型包括byte字节型(一个字节)、char字符型(两个字节)、short短整型(两个字节)、int整型(四个字节)、long长整型(八个字节)、float浮点型(四个字节)、double 双精度浮点型(八个字节)、boolean型(一个字节)八种类型,对应的封装类型分别是Byte、Character、Short、Integer、Lon
java进阶--深入理解Java自动装箱拆箱机制(Autoboxing and unboxing)
1.自动装箱与拆箱的定义装箱就是自动将基本数据类型转换为包装器类型;拆箱就是 自动将包装器类型转换为基本数据类型。Java中的数据类型分为两类:一类是基本数据类型,另一类是引用数据类型。如下图:由上可知Java中的基本数据类型有八种分别是:int(4字节) byte(1字节) short(2字节) long(8字节) float (4字节) double(8字节) char(2字节) b
Java进阶之自动拆箱与自动装箱
自动装箱:把基本类型用它们对应的包装类包装起来,使它们具有对象的特质,可以调用所对应的包装类所定义的方法,比如toString()等。 自动拆箱:跟自动装箱的方向相反,将Integer及Double这样的包装类的对象重新简化为基本类型的数据。
Java自动装箱和自动拆箱
Java自动装箱和拆箱
【Java】Java的==和equals()以及自动装箱拆箱
Java的==和equals()以及自动装箱拆箱Java的和equals以及自动装箱拆箱 抛一个问题 先说一说 和 equals方法equals方法 再说一下Integer的缓存机制 自动装箱和自动拆箱 自动装箱 自动拆箱 再来看之前那个问题就很简单了抛一个问题大家先看下面的代码,先不要看答案自己做一下:public class AutoboxingTest { public static
详解Java的自动装箱与拆箱(Autoboxing and unboxing)
一、什么是自动装箱拆箱 很简单,下面两句代码就可以看到装箱和拆箱过程 //自动装箱 Integer total = 99; //自定拆箱 int totalprim = total; 简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。 下面我们来看看需要装箱拆箱的类型有哪些: 这个过程是自动执行的,那么我们需要看看它的执行过...
自动装箱和自动拆箱(AutoBoxing,Unboxing)
什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。  一般我们要创建一个类的对象实例的时候,我们会这样:  Class a = new Class(parameter);  当我们创建一个Integer对象时,却可以这样:  Integer i = 100; (注意:不是 int i =
Java学习笔记之自动装箱与拆箱
更多博文可参考我的个人独立博客:贱贱的梦想 什么是自动装箱与拆箱自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。 自动装箱时编译器调用valueOf()将原始类型值转换成对象;自动拆箱时,编译器通过调用类似xxxValue()这类方法(如intValue(),doub
JAVA——包装类的自动装箱和拆箱
关于JAVA的包装类自动拆箱和装箱,有很多人做过介绍,但笔者发现说的不够简洁,而这个问题在面试、笔试中又经常涉及,故笔者将搜集到的信息与大家分享下: 包装类(原始类型对应的类,即Boolean, Byte, Short, Integer, Long, Float, Double, Character)的自动拆、装箱规则如下: 遇到赋值运算符“=”(包括传参数,参数传递属于隐式赋值)