Integer,String等引用内存分析





int和Integer



1) int a=数值 , Integer a=数值 , a=new Integer(数值) 这三者进行==比较时,结果永远为true.

原因:Integer类型与int比较时,Integer会自动拆箱。


2) Integer a=数值 与 a=new Integer(数值)这两者进行==比较时,结果永远为false.

原因:这两者都是引用类型,当前者处于[-128,127]范围内时,会直接从IntegerCache中取;不在[-128,127]范围时,会在堆区new一个新对象,此时两者都是堆中的两个独立的对象。


3) Integer a1=数值 与 Integer a2=数值 比较时看情况:

当两者范围均在[-128,127]里,则两者均指向IntegerCache中对应的值,指向的是同一个值,因此 == 为true。
当两者范围不在[-128,127]中,则a1和a2分别指向堆中的两个独立对象,因此 == 为false。





String















posted @   卡卡发  阅读(46)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示