从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. CSS三角形制作样式

    .triangle{ display: block; height: 0; position: absolute; width: 0; border: 9px solid; border-color: ...

  2. 非确定有限状态自动机的构建(一)——NFA的定义和实现

    保留版权,转载需注明出处(http://blog.csdn.net/panjunbiao). 非确定有限状态自动机(Nondeterministic Finite Automata,NFA)由以下元素 ...

  3. ViewState的用法

    学习标签: ViewState 本文导读:在web窗体控件设置为runat = "server",这个控件会被附加一个隐藏的属性_ViewState,_ViewState存放了所有 ...

  4. php使用 _before_index() 来实现访问页面前,判断登录

    C:\wamp\www\DEVOPS\Home\Lib\Action: <?php class IndexAction extends Action { function index(){ $t ...

  5. SpringMVC经典系列-12基于SpringMVC的文件上传---【LinusZhu】

    注意:此文章是个人原创.希望有转载须要的朋友们标明文章出处,假设各位朋友们认为写的还好,就给个赞哈,你的鼓舞是我创作的最大动力.LinusZhu在此表示十分感谢,当然文章中如有纰漏.请联系linusz ...

  6. N-Queens And N-Queens II [LeetCode] + Generate Parentheses[LeetCode] + 回溯法

    回溯法 百度百科:回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标.但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步又一次选择,这样的走不通就退回再走的技术为回溯法 ...

  7. 节点地址的函数list_entry()原理详解

    本节中,我们继续讲解,在linux2.4内核下,如果通过一些列函数从路径名找到目标节点. 3.3.1)接下来查看chached_lookup()的代码(namei.c) [path_walk()> ...

  8. <转载>CSS解决图片过大撑破DIV的方法

    DIV+CSS网页内容中如果插入大于DIV层宽度显示,过大的图片将会撑破网页宽度显示从而网页严重变形,您是否遇到过?这里DIVCSS5给大家介绍几种解决图片撑破撑开网页DIV层方法. 图片撑破宽度解决 ...

  9. jquery mobile实现拨打电话功能的几种方法

    3.使用wtai协议进行拨打电话. 在wml中可以调用设备的wtai函数来呼叫特定的电话号码.目前,越来越多的浏览器都支持这个功能,但还不是所有. 代码如下所示: 复制代码 代码如下: <inp ...

  10. CodeForces 21C Stripe 2 构造题

    题目链接: 题目链接:点击打开链接 #include <cstdio> #include <cstring> #include <algorithm> #inclu ...