“=” 比较的理解
- 常量池:Byte,Short,Integer,Long,Character这5种整型的包装类也只是在对应值小于等于127并且大于等于-128时才可使用常量池,因为他们至占用一个字节(-128~127);
- 以Integer包装类为例:
Integer i_0 = 59; Integer i_1 = new Integer(59);//new 的方式在堆上创建一个对象 Integer i_2 = Integer.valueOf(59);//Integer.valueOf() 在范围内使用缓存创建 int i_3 = 59;
- '=='比较的是地址。
- 但当比较的是基本数据类型时,比较的为值。若有'=='一边有Integer类型,会转换成int类型,然后比较值。
i_0 == i_3 //true i_2 == i_0 //true
- 当比较的是对象时,比较的是对象地址。
- 代码。
- 内存图。