zoukankan      html  css  js  c++  java
  • java自己主动打开包装盒很容易导致两个误区

    从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.



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

  • 相关阅读:
    系统的讲解
    系统的讲解
    前端笔记之Vue(七)Vue-router&axios&Vue插件&Mock.js&cookie|session&加密
    前端笔记之Vue(六)分页排序|酷表单实战&Vue-cli
    前端笔记之Vue(五)TodoList实战&拆分store&跨域&练习代理跨域
    EggJs快速入门
    前端笔记之Vue(四)UI组件库&Vuex&虚拟服务器初识
    前端笔记之Vue(三)生命周期&CSS预处理&全局组件&自定义指令
    前端笔记之Vue(二)组件&案例&props&计算属性
    前端笔记之Vue(一)初识SPA和Vue&webpack配置和vue安装&指令
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4614511.html
Copyright © 2011-2022 走看看