java自动打包的差异

java自动打包的差异
自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被包装到固定的对象中.
打包和拆包是编译器认可的,而不是虚拟机,编译器在生成类的字节码时,插入必要的方法调用,虚拟机只是执行这些字节码。

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

 

你可能感兴趣的:(java自动打包的差异)