自动装箱和拆箱的功能,在J2SE 5.0之后提供了自动装箱的功能
//1-----
Integer integer = 10;
//2-----
int i = 10;
Integer integer = i;
//3-----
Number number = 3.14f;
//使用更一般话的Java.lang.Number类来自动装箱,3.14f会先自动装箱为Float,然后指定给number
自动拆箱
Integer a = 10;
int b = a;
自动装箱和拆箱是“编译器蜜糖(Compiler Sugar)”:
Integer i = null;
int j = i;
上面的语法在编译时不会出错,但在运行时相当于
Integer i = null;
int j = i.intValue();
会出错!!!i并没有参考至任何的对象,所以不能操作intValue()方法,会出现NullPointerException。
public class AutoBoxDemo{
public static void main(String[] args){
Interger i1 = 100;
Interger i2 = 100;
if(i1 == i2)
System.out.println("i1==i2");
else
System.out.println("i1!=i2");
}
}
显示i1==i2
但是把i1和i2的值改为200,显示结果就为i1!=i2.
事实上==也用于判断两个对象变量名称是否参考同一个对象。在自动装箱时对于值从-128到127之间的值,他们被装箱为Integer后,会存在内存中被重用,所以在使用==进行比较时,100的值,i1和i2会参考至同一个对象。如果超过-128到127之间的值,被装箱后Integer对象并不会重用,即相当于每次装箱时都新建一个Integer对象,所以在200值时用==进行比较i1和i2时参考不同的对象。
分享到:
相关推荐
本学习笔记旨在帮助新手全面理解并掌握Java 5.0的关键知识点。 一、泛型(Generics) Java 5.0引入了泛型,它允许在定义类、接口和方法时指定类型参数,从而实现类型安全的集合。泛型消除了强制类型转换的需要,...
### Java学习笔记极品4:深入理解autoboxing与unboxing #### 一、对象与基本数据类型:autoboxing与unboxing的意义 在Java的世界里,面向对象编程(OOP)占据着核心地位,对象(Object)是其基础构建单元。然而,...
良葛格的Java JDK 5.0学习笔记是一份宝贵的资源,旨在帮助初学者和有经验的开发者深入理解这一版本的新特性和改进。 一、自动类型转换与类型推断(Generics) JDK 5.0引入了泛型,允许在类、接口和方法声明中使用...
c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...
Beanshell 是一个轻量级的Java源代码解释器,它允许开发者通过脚本语言的方式执行Java语句和表达式。...无论是用于快速原型开发,还是在现有Java应用中添加脚本功能,Beanshell都是一个值得学习和使用的工具。
【容器API概述】 容器API是Java编程语言中用于管理和组织对象的重要部分,它包含了一系列类和接口,这些类和接口提供了在程序中存放和操作对象的能力。...理解并熟练使用这些容器和概念,是Java开发中的关键技能。
### C#自学笔记知识点梳理 #### 一、C#编程基础 **1.1 概述** C#是一种面向对象的编程语言,由微软开发,主要用于.NET Framework平台上的应用程序开发。它结合了C++和Java的优点,具有简洁、高效、安全性强等特点...