java中 不同的引用变量指向同一变量 首地址为什么不会相同

如题所述

s1和s2分别指向两个创建的String 类对象,尽管创建的两个 String实例对象看上去一样,但他们是两个彼此独立的对象,是两个占据不同内存地址的不同的对象.
String s1 = new String("hello");
String s2 =new String("hello");
s1和s2分别是两个对象的句柄,也就是s1和s2的值分别是两个对象的内存地址,显然他们的值是不相等的.

String str1 = new String("abc");
String str2 = new String("abc");
String str3 = str1;
str1和str3是同一对象,他们相等,他们和str2不是一个对象,他们不相等
当然,如果你用 equals()方法比较他们的内容,他们三都相等
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-07
你的意思是首地址相同了?因为他们的所指向的地址相同,地址当然一样了追问

应该是不同的引用变量指向同一对象 引用变量的值是对象的内存存储地址 对象的内存存储地址是固定的 怎样不同的引用变量指向时 会导致不一样了 ?:??
String str1= new String("abc");
String str2= new String("abc");
if(str1==str2)//比较引用变量的值,及各自所对应的首地址
System.out.println("true");
else
System.out.println("false");

输出的false

追答

哦,明白你的意思,因为你使用的是引用类型,类的实例都会单独分配内存的,他们的指针是不同的,而
String str1= "abc";
String str2= abc";
if(str1==str2)
System.out.println("true");
else
System.out.println("false");

这样结果就会输出ture

本回答被提问者采纳
相似回答