当我写
String str1 = new String("hello");
String str2 = new String("hello");
afaik,即使字符串内容相同,str1
并且str2
将指向单独的内存位置,因为它将在堆中而不是在池中引用。
在这种情况下,当我执行下面的程序时,为什么当字符串的两个实例(键)不同时它会给我一个值?那么为什么用户定义的对象没有发生同样的情况呢?
String str1 = new String("hello");
String str2 = new String("hello");
AB obj1 = new AB();
BC obj2 = new BC();
HashMap h = new HashMap();
h.put(str1, "data");
h.put(obj1, "data1");
System.out.println(h.get(str2));
System.out.println(h.get(obj2));
class AB {
int code = 10;
}
class BC {
int code = 10;
}
输出:
data
null