Java|java包装类的自动封装、自动拆箱和缓存( 二 )



return new ImitateInteger(i);
//不在区间内则new新对象返回

public static void main(String[
args) {
ImitateInteger i1 = ImitateInteger.valueOf(1);
ImitateInteger i2 = ImitateInteger.valueOf(1);
System.out.println(i1==i2);
//结果true i1和i2都没有new对象 返回了cache[1+(-(-128))
即cache[129
  cache[129
.value对应1
ImitateInteger i3 = ImitateInteger.valueOf(200);
ImitateInteger i4 = ImitateInteger.valueOf(200);
System.out.println(i3==i4);
//结果false i3和i4分别指向new新生成的对象

public boolean equals(Object o){
//重写继承自Object 的equals()
if (o instanceof ImitateInteger){
return this.value=https://mparticle.uc.cn/api/=((ImitateInteger)o).value;
//比较两个对象的value  将o强转为ImitateInteger

return false;
//不是同类返回false
// this.equals(o); 用来比较两个对象所以不是static方法

public int intValue(){
return this.value;
//int a = i4.intValue(); 将包装类转为基本数据类型 要转换的是对象 所以不用static

@Override
public String toString() {
//重写toString
return \"\"+this.value;
//返回值只能是字符串