一小段经典代码的疑问
下面是代码和输出:
public class Test
{
public static void main(String[] args) {
String a = new String("Heipark");
String b = new String("Heipark");
String c = "Heipark";
String d = "Heipark";
// "==" 比较的是两个变量是否引用同一个对象
// "equals" 比较的是两个字符串的内容
System.out.println("a == b ->" + (a == b));
System.out.println("a.equals(b) ->" + a.equals(b));
System.out.println("c == d ->" + (c == d));
System.out.println("c.equal(d) ->" + c.equals(d));
System.out.println("a == c -> " + (a ==c));
System.out.print("a.equals(c) ->" + a.equals(c));
}
}
输出:
a == b ->false
a.equals(b) ->true
c == d ->true
c.equal(d) ->true
a == c -> false
a.equals(c) ->true
1.为什么"c == d"返回的值是true呢???
2.c,d是同一个对象
3.String a = new String("123"); 和String a = "123";不一样吗?