技术开发 频道

java自动打包的差异



【IT168 技术文档】

自JDK1.0开始就存在包装器类,但是在JDK5.0之前,必须手工地插入打包和拆包的代码.JDK5.0中就有了自动打包功能,但在5.0中自动打包时存在一些差异,刚才看《java核心技术第7版》时才发现.

代码1:
Integer a=1000;
Integer b
=1000
;
System.out.println(a
==b);//false
代码2:
Integer a=100;
Integer b
=100
;
System.out.println(a
==b);//true
代码3:
Integer a=new Integer(100);
Integer b
=new Integer(100
);
System.out.println(a
==b);//false

第一段代码不成立,而第二段代码成立的原因是:自动打包
自动打包规范要求boolean,byte,char≤127,介于-128→127之间的short和int被包装到固定的对象中.
打包和拆包是编译器认可的,而不是虚拟机,编译器在生成类的字节码时,插入必要的方法调用,虚拟机只是执行这些字节码。

第三段代码不用多说肯定不成立.

0
相关文章