String 的疑惑。String a = "abc" 和String a = new String("abc")不同?
艾德 2007-05-31 04:32:19 测试代码如下:
String a = "abc";
String b = "abc";
System.out.println(a == b);
输出:true
==========================
String a = new String("ade");
String b = new String("ade");
System.out.println(a == b);
输出:false
请问:String a = "abc" 和String a = new String("abc")有什么不同?
*****************************************************************
另外:请高人告知以下三段代码的输出是什么?为什么?(关健是告之为什么)
第一段代码:
HashMap map = new HashMap();
String a = "ade";
String b = "ade";
map.put(a, new Boolean(true));
map.put(b, new Boolean(false));
System.out.println(map.get(a).toString());
System.out.println(map.get(b).toString());
第二段代码:
HashMap map = new HashMap();
String a = new String("ade");
String b = new String("ade");
map.put(a, new Boolean(true));
map.put(b, new Boolean(false));
System.out.println(map.get(a).toString());
System.out.println(map.get(b).toString());
第三段代码:
HashMap map = new HashMap();
MyString a = new MyString("ade");
MyString b = new MyString("ade");
map.put(a, new Boolean(true));
map.put(b, new Boolean(false));
System.out.println(map.get(a).toString());
System.out.println(map.get(b).toString());
其中MyString定义如下:
public class MyString {
String str;
public MyString(String str){
this.str = str;
}
@Override
public int hashCode() {
return str.hashCode();
}
}
谢谢!