文章出处:安卓进阶学习指南作者:麦田哥(Wheat7)审核者:shixinzhang ,Struggle完稿日期:2018.1.25
读完本文你将了解:
背景介绍
大家好,这篇文章是 《安卓进阶技能树计划》 的第一部分 《Java 基础系列》 的第三篇。
我们做这个活动,除了要保证知识点的全面、完整,还想要让每一篇文章都有自己的思考,尽可能的将知识点与实践结合,努力让读者读了有所收获。每位小伙伴都有工作在身,每个知识点都需要经过思考、学习、写作、提交、审核、修改、编辑、发布等多个过程,所以整体下来时间就会慢一些,这里先向各位道歉。
《Java 基础系列》初步整理大概有 12 篇,主要内容为:
抽象类和接口 (完成)
内部类(完成)
修饰符
装箱拆箱
注解
反射
泛型
异常 (完成)
集合
IO
字符串
其他
今儿来和大家聊一聊 Java
中的自动拆装箱问题,欢迎大家多多讨论。
什么是自动拆装箱
自动拆装箱在 Java5(就是Java1.5,后边改了命名) 中被引入,说白了,就是个语法糖。
自动装箱就是编译器自动将基础类型值转换成对应的包装类对象,比如将 int
的变量转换成 Integer
对象,这个过程叫做装箱;反之将 Integer
对象转换成 int
类型值,这个过程叫做拆箱。
基本类型与引用类型
稍有 Java 基础的同学都应该知道 Java 的数据类型,大的分类就分为基础类型与引用类型。
基础类型又能分为我们俗称的四类八种,分别为:
四种整型:
-
两种浮点类型
-
1种Unicode编码的字符单元 char
最后就是boolean,真值布尔类型
与我们今天主题相关的重点是:类中基础类型的成员是存储在栈内存中的,在对象创建的时候就会被初始化,无论你用或不用,他都会被赋予默认的初始值,比如 int 类型,就是 0。
并且我们再扩展讨论一下这个情况:
int a = 1
int b = 1
System.out.printf(a == b) ---- true
基本类型相同的值指向的是同一块内存区域,而 == 判断的是内存地址,也就是判断两者是否为同一个对象,所以返回的是 ture。
注意:引用类型是否相等不能用 == 来判断,而是要用 equals()方法。
引用类型分为类,接口,数组三种。之所以叫“引用类型”,是因为我们的引用类型的对象,是存在于堆内存中的,我们所持有的是栈内存中指向相应堆内存的一个引用。