`
sky840505
  • 浏览: 34015 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

《java学习笔记》读书笔记の小心使用Boxing

阅读更多
自动装箱和拆箱的功能,在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 JDK 5.0学习笔记

    本学习笔记旨在帮助新手全面理解并掌握Java 5.0的关键知识点。 一、泛型(Generics) Java 5.0引入了泛型,它允许在定义类、接口和方法时指定类型参数,从而实现类型安全的集合。泛型消除了强制类型转换的需要,...

    java学习笔记极品4

    ### Java学习笔记极品4:深入理解autoboxing与unboxing #### 一、对象与基本数据类型:autoboxing与unboxing的意义 在Java的世界里,面向对象编程(OOP)占据着核心地位,对象(Object)是其基础构建单元。然而,...

    良葛格Java JDK 5.0学习笔记

    良葛格的Java JDK 5.0学习笔记是一份宝贵的资源,旨在帮助初学者和有经验的开发者深入理解这一版本的新特性和改进。 一、自动类型转换与类型推断(Generics) JDK 5.0引入了泛型,允许在类、接口和方法声明中使用...

    java Boxing Null Pointer 源码

    java Boxing Null Pointer 源码

    c#学习笔记.txt

    c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...

    Android-boxing基于MVP模式的Android多媒体选择器

    【Android Studio插件】方面,虽然在提供的信息中没有直接提到Android-boxing作为插件使用,但通常,这类库可以通过Gradle依赖进行添加。开发者可以在项目的build.gradle文件中引入相应的依赖,例如: ```groovy ...

    beanshell学习笔记

    Beanshell 是一个轻量级的Java源代码解释器,它允许开发者通过脚本语言的方式执行Java语句和表达式。...无论是用于快速原型开发,还是在现有Java应用中添加脚本功能,Beanshell都是一个值得学习和使用的工具。

    unity3d 游戏源码 Boxing Game Starter Kit 拳击项目包 资源.zip

    《Unity3D游戏开发:Boxing Game Starter Kit详解》 Unity3D作为一款强大的跨...通过深入研究这个项目包,开发者不仅可以学习到Unity3D的基本使用方法,还能掌握游戏开发流程,为进一步的创新和项目开发打下坚实基础。

    马士兵J2SE第七章容器个人学习笔记.pdf

    【容器API概述】 容器API是Java编程语言中用于管理和组织对象的重要部分,它包含了一系列类和接口,这些类和接口提供了在程序中存放和操作对象的能力。...理解并熟练使用这些容器和概念,是Java开发中的关键技能。

    完整版 Java高级教程 Java语言程序设计 第4章 Java泛型(共10页).ppt

    但可以通过使用Boxing和Unboxing自动转换基本类型。同时,我们可以使用`extends`或`super`关键字来限制类型参数的范围,例如`<T extends Number>`表示`T`必须是Number类或其子类。这种有界类型限制可以进一步确保...

    Boxing.zip

    综上所述,Boxing.zip中的项目涵盖了51单片机基础、传感器接口设计、数据融合算法以及串口通信技术等多个IT领域的知识点,对于学习嵌入式系统开发和物联网应用的工程师来说,是一个很好的实践案例。通过深入理解和...

    c#学习基础笔记源码

    C#是一种广泛应用于Windows平台和.NET框架的面向对象的编程语言。它由Microsoft公司开发,设计目的是提高软件开发效率和代码...这份源码笔记是深入学习C#的良好起点,它提供了实践这些概念的实例,有助于巩固理论知识。

    Java虚拟机1.5

    3. **自动装箱与拆箱**:Java 5引入了自动装箱和拆箱机制,使得基本类型和对应的包装器类之间的转换更为简便,无需手动进行Boxing和Unboxing操作。 4. **增强的for循环(foreach)**:Java 5引入了增强的for循环,...

    Java 语法糖详解1

    自动装箱(Auto Boxing)和拆箱(Auto Unboxing)是Java 5引入的另一个语法糖,它简化了基本类型与它们对应的包装类之间的转换。例如,int和Integer之间的转换不再需要显式调用构造函数或valueOf方法。 糖块六:内部类 ...

    基于MVP模式的Android多媒体选择器boxing.zip

    boxing 是 Bilibili 开源的基于 MVP 模式的 Android 多媒体选择器。特性支持多/单图片选择和预览,单图裁剪功能支持gif支持视频选择功能提供图片压缩支持自定义UI预览图  标签:boxing

    C基础语法个人学习笔记(注释).doc

    以上知识点涵盖了 C# 的基础语法、数据类型、控制流、异常处理、面向对象特性、集合与泛型、异步编程等多个方面,为深入学习 C# 打下了坚实的基础。在实际编程中,还需要结合具体的项目需求和上下文灵活运用这些知识...

    Boxing brophius

    Boxing brophius

    Java高新技术

    3. **性能优化**:Java性能优化涉及JVM参数调整、Garbage Collection策略选择、代码优化(如避免 boxing/unboxing,减少对象创建)等。理解和掌握JVisualVM、JProfiler等工具对于定位和解决性能瓶颈至关重要。 4. *...

    html5小游戏【3d boxing拳击游戏】源代码免费分享

    html5小游戏【3d boxing拳击游戏】源代码免费分享html5小游戏【3d boxing拳击游戏】源代码免费分享html5小游戏【3d boxing拳击游戏】源代码免费分享html5小游戏【3d boxing拳击游戏】源代码免费分享html5小游戏【3d ...

Global site tag (gtag.js) - Google Analytics