结论
- 不一定。
- 基本类型返回的是值 引用数据类型返回的是引用地址(是否同一个引用看是否用到常量池)
- '==' 基本类型比较的是两者的值是否相同 而引用类型比较两者的是引用地址是否相同
基本类型
返回的值相同 '=='就为true
public int m1(){
return -1;//obj.m1()==obj.m2() true
}
public double m2(){
return 2.2;//obj.m2()==obj.m2() true
}
引用类型
返回的引用地址相同 '=='就是true
public String m3(){
return "m3";//obj.m3()==obj.m3() true
//"m3"在常量池中 所以返回的引用地址相同(指向常量池中的地址)
}
public String m4(){
return new String("m4");//odj.m4()==obj.m4() false
//new实例会在堆内存中开辟内存空间 即返回的引用地址不同(返回堆中的地址) 所以false
}
public Integer m5(){
return new Integer(1);//obj.m5()==obj.m5() false
}
public Integer m6(){
return 66;//常量池[-128,127]不同对象调用返回的都是相同的引用
}
public Integer m7(){
return 777;//超出常量池 范围 不相同
}
原文链接:https://www.cnblogs.com/odfive/p/17352810.html
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中不同对象调用该实例方法返回值是同一个地址空间吗? - Python技术站