从J2SE 5.0开始提供基本数据类型的自己主动装箱(autoboxing)、拆箱(unboxing)功能。

何为自己主动装箱:

当我们创建一个Integer对象时,却能够这样:

Integer
i = 100; (注意:不是 int i = 100; )

实际上,运行上面那句代码的时候,系统为我们运行了:Integer i = new Integer(100); 此即基本数据类型的自己主动装箱功能。

何为自己主动拆箱

自己主动拆箱(unboxing),也就是将对象中的基本数据从对象中自己主动取出。例如以下可实现自己主动拆箱:

Integer
integer=100;

int
flag=integer;  //该语句即实现了自己主动拆箱。

在进行编译时,编译器再自己主动依据您写下的语句,推断是否进行自己主动装箱动作。

错误一:NullPointerException

例如以下程序在编译时不会出错,在执行时则会报NullPointerException

Integer i = null;
int j = i;

这种语法在编译时期是合法的,可是在执行时期会有错误,由于这种写法相当于:

Integer i = null;
int j = i.intValue();

null表示i没有參考至不论什么的对象实体。它能够合法地指定给对象參考名称。因为实际上i并没有參考至不论什么的对象,所以也就不可能操作intValue()方法,这样上面的写法在执行时会出现NullPointerException错误。

错误二:NoSuchMethodError

java在进行编译时期,会自己主动进行装箱拆箱操作,当我们编译结束,生成的.class文件后。该.class二进制文件肯定将Integer对象和基本数据类型差别对待。

错误重现:

步骤一:编译Student类

public class Student {
public int getStudents(int flag){
return flag;
}
}

步骤二:编译并执行Teacher类。无不论什么问题

public class Teacher {

	private static Student student=new Student();
public static void main(String[] args) {
System.out.println(getTeacherCount(3));
}
public static int getTeacherCount(Integer integer) {
return student.getStudents(3);
}
}

步骤三:

我们改动Student类。并编译

<pre name="code" class="java" style="color: rgb(51, 51, 51); line-height: 20px; ">public class Student {
public Integer getStudents(Integer integer){
return integer;
}
}

步骤四。

又一次执行Teacher类中的main方法,报错NoSuchMethodError.

版权声明:本文博客原创文章,博客,未经同意,不得转载。

java自己主动打开包装盒很容易导致两个误区的更多相关文章

  1. Tomcat9.0.13 Bug引发的java.io.IOException:(打开的文件过多 Too many open files)导致服务假死

    问题背景: 笔者所在的项目组最近把生产环境Tomcat迁移到Linux,算是顺利运行了一段时间,最近一个低概率密度的(too many open files)问题导致服务假死并停止响应客户端客户端请求 ...

  2. 转:Java多线程学习(总结很详细!!!)

    Java多线程学习(总结很详细!!!) 此文只能说是java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更上一个台阶呢? 本文主要讲java中多线程 ...

  3. 重点|183道Java面试题可以说很详细了

    <p style="text-align: right;"><span style="font-size: 14px;color: rgb(136, 1 ...

  4. [转]Java多线程学习(总结很详细!!!)

    Java多线程学习(总结很详细!!!) 此文只能说是java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更上一个台阶呢? 本文主要讲java中多线程 ...

  5. Java的BIO和NIO很难懂?用代码实践给你看,再不懂我转行!

    本文原题“从实践角度重新理解BIO和NIO”,原文由Object分享,为了更好的内容表现力,收录时有改动. 1.引言 这段时间自己在看一些Java中BIO和NIO之类的东西,也看了很多博客,发现各种关 ...

  6. 解决: java.io.IOException: 打开的文件过多 的问题

    问题 前一阵子公司项目做了一次压力测试, 中间出现了一个问题: 在50多个并发的时候会出现 java.io.IOException: 打开的文件过多 这个异常. 但是在没有并发的时候是不会出现这个问题 ...

  7. Android之使用JAVA占位符格式数据(很实用)

    小编虽然是学java出生,但工作之后就一直从事android开发,很多java基础都忘记完了,最近一年从ES换到了AS,原来的很多习惯都收到了挑战,比如我喜欢ES写方法的时候先在JAVA projec ...

  8. 在java.ext.dirs中使用环境变量导致crontab执行不成功的问题及解决

    在java.ext.dirs中使用环境变量导致crontab执行不成功的问题及解决 Table of Contents 1. java.ext.dirs的使用和环境变量 2. 问题:在crontab中 ...

  9. wordpress网站后台打开速度很慢解决方法?

    今天就和朋友们分享下,wordpress网站后台最近打开速度很慢的原因及解决方法.推荐第三种方法 方法/步骤   1.安装插件:在插件中搜索 Disable Google Fonts,选择安装,然后启 ...

随机推荐

  1. ibatis通过Map封装参数调用存储过程

    一.存储过程如下(领导写的) CREATE OR REPLACE PROCEDURE agent_UIMOrIMEICheck_pro ( I_CARD_NO IN VARCHAR2, --UIM卡或 ...

  2. [hadoop系列]Pig的安装和简单演示样例

    inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yaho ...

  3. HDOJ 1800 Flying to the Mars 盲目搜索......................so easy...........

    check the original problem here:http://acm.hdu.edu.cn/showproblem.php?pid=1800 the AC code: #include ...

  4. ASP.NET - 锚点跳转,用于回到顶部

    <a name ="top"></a> <a href ="#top">回到顶部</a> 第一行代码写在顶部,第 ...

  5. HDU--杭电--3790--最短路径问题

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  6. 14.18.1 The InnoDB Recovery Process InnoDB 恢复进程:

    14.18.1 The InnoDB Recovery Process InnoDB 恢复进程: InnoDB crash recovery 有几个步骤组成: 1.应用redo log,Redo lo ...

  7. Linux/ubuntu下的boost库安装

    我一直都没有写博客的习惯,最近正好在研究linux下的开发(目前也只是粗粗的研究),且用到了boost库,就乘此机会写点什么,最起码记录一下我在安装boost的一些步骤,主要给和我一样的linux开发 ...

  8. 例解 autoconf 和 automake 生成 Makefile 文件

    本文介绍了在 linux 系统中,通过 Gnu autoconf 和 automake 生成 Makefile 的方法.主要探讨了生成 Makefile 的来龙去脉及其机理,接着详细介绍了配置 Con ...

  9. JavaScript编程:浏览器对象模型BOM

    4.浏览器对象模型BOM: document.body.offsetwidth可以获取浏览器宽度. Window对象:          窗口操作:            1.moveBy(dx,dy ...

  10. ASP.NET、HTML+CSS - 弹出提示窗体

    刷新数据,提示之后,CSS样式改变: 解决方案: 在ASP.NET中,如果是添加信息成功之后出现提示信息,那么只能用  ClientScript.RegisterStartupScript(this. ...