确切的讲,你的代码里面有三个对象,两个栈内存里的引用对象s1、s2,一个对堆内存里的实例对象“abc"
look yi下测试代码- class StringTest
- {
- public static void main(String[] args)
- {
- String s1="abc";
- String s2=new String("abc");
- System.out.println(s1==s2);
- System.out.println(s1.equals(s2));
- System.out.println(s1.hashCode());
- System.out.println(s2.hashCode());
- }
- }
复制代码 s1,s2拥有的句柄是相同的都来自堆里的”abc“,看运行结果
false
true
96354 //
96354 //这两行结果可以看出,s1,s2指向同一对象 |