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

问题描述

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

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

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

解决方案

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

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

解决方案二:

java基础之自动装箱和拆箱
Java基础之包装类的自动装箱和拆箱详解
Java基础复习:自动装箱&自动拆箱

时间: 2024-12-05 10:44:38

java基础:合法转换与自动装箱、拆箱的相关文章

Java基础笔记 – 增强的for循环For each循环 自动装箱拆箱 可变参数

1.For each循环:1.1.语法:1.2.For each循环的使用:1.3.嵌套For each循环:1.4.三种循环遍历集合的列举:1.5.增强的for循环的缺点:2.自动装箱/拆箱(Autoboxing/unboxing):2.1.自动装箱:2.2.自动拆箱:2.3.Integer类相关的源代码:2.3.1.valueOf方法:3.可变参数:3.1.包含可变参数的函数:3.2.接收参数:3.3.说明: 1.For each循环: JDK5.0中提供的新特性For each循环的加入简

java自动装箱拆箱深入剖析_java

这个是jdk1.5以后才引入的新的内容,作为秉承发表是最好的记忆,毅然决定还是用一篇博客来代替我的记忆: java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装成为装箱,解包装称为拆箱): 其实按照我自己的理解自动装箱就可以简单的理解为将基本数据类型封装为对象类型,来符合java的面向对象:例如用int来举例: 复制代码 代码如下: //声明一个Integer对象 Integer num = 10; //以上的声明就是用到了自动的装箱:解析为 Integer nu

java 自动装箱拆箱实现方法

java 自动装箱拆箱实现方法 什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自j2se 5.0开始提供的功能.  一般我们要创建一个类的对象的时候,我们会这样: class a = new class(parameter); 当我们创建一个integer对象时,却可以这样: integer i = 100; (注意:不是 int i = 100; ) 实际上,上面那句代码相当于:integer i = new integer(100); 此即基本

Java 性能要点:自动装箱/ 拆箱 (Autoboxing / Unboxing)

[编者按]本文作者为 Ali Kemal TASCI,最早于2016年4月9日发布于DZONE社区.文章主要介绍通过改进 Java 1.5 就已存在的骨灰级特性大幅度提高应用性能. 本文系 OneAPM 工程师编译呈现,以下为正文. 如果我告诉你:"只要修改一个字符,下面这段代码的运行速度就能提高5倍.",你觉得可能么? long t = System.currentTimeMillis(); Long sum = 0L;for (long i = 0; i < Integer.

装箱拆箱中内存分布的流程

问题描述 装箱拆箱中内存分布的流程 装箱问题,我在msdn上看到的说明又变糊涂了; object o=1; 我们知道这里发生了装箱,在堆上开辟了内存空间并且返回了一个引用给o,这个o现在是谁?(我原来理解就是这个新开辟的内存就是o,那这个引用返回给谁?) 我在msdn上看到说是栈上面的"The result of this statement is creating an object reference o, on the stack, that references a value of t

list-link中使用List&amp;amp;lt;object&amp;amp;gt;还需要装箱拆箱么?

问题描述 link中使用List<object>还需要装箱拆箱么? link中使用List还需要装箱拆箱么? 解决方案 首先搞清楚,装箱拆箱在什么情况下发生,当你将堆栈上的变量放入维持object引用的集合的时候,必然要装箱.试想,如果List不装箱,而直接存int,那么它存另一种类型,比如string 存入的是引用(地址),岂不是乱套了,它怎么知道这个是int的值还是string的引用.所以必须都装箱成对象. 所以结论就是,需要.

C#装箱拆箱操作演示代码

  C#装箱和拆箱操作的演示代码,不知道什么是装箱和拆箱的这里就不介绍了,是栈和堆的使用方面的东西,C#专业达人应该都知道,所以这里就不哆嗦了,代码也是面向C#新手的,挺简单:

JAVA 入坑教程 | 章节九 详解java的装箱和拆箱

简单点,代码的方式简单点,装逼的方式请省略,我们又不是演员,别设计那些情节 什么是装箱?什么是拆箱?代码如何展示? 装箱过程是怎样的?拆箱过程是怎样的? 有问题可加入安卓QQ群: 246231638 装箱和拆箱的概念 简单点,代码的方式简单点,装逼的方式请省略,我们又不是演员,别设计那些情节: //自动装箱 Integer total = 9999; //自动拆箱 int totalprim = total; 装箱:就是自动将基本数据类型转换为包装器类型: 拆箱:就是自动将包装器类型转换为基本数

Java JDK之自动装箱和拆箱

基本数据(Primitive)类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供的功能.虽然为您打包基本数据类型提供了方便,但提供方便的同时表示隐藏了细节,建议在能够区分基本数据类型与对象的差别时再使用. autoboxing和unboxing 在Java中,所有要处理的东西几乎都是对象 (Object),例如之前所使用的Scanner是对象,字符串(String)也是对象,之后还会看到更多的对象.然而基本(Primitive)数据类型不是对象,也就是您