欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java中不同对象调用该实例方法返回值是同一个地址空间吗?,基本类型返回的是值引

来源: javaer 分享于  点击 20535 次 点评:149

Java中不同对象调用该实例方法返回值是同一个地址空间吗?,基本类型返回的是值引


结论

  • 不一定。
  • 基本类型返回的是值 引用数据类型返回的是引用地址(是否同一个引用看是否用到常量池)
  • '==' 基本类型比较的是两者的值是否相同 而引用类型比较两者的是引用地址是否相同

基本类型

返回的值相同 '=='就为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;//超出常量池 范围 不相同
}


相关栏目:

用户点评