Java:比较引用和对象

时间:2016-05-20 07:06:51

标签: java string

我不明白这段代码的ouptut。比较具有相同值的两个字符串(未使用new关键字分配)时,java返回true。但是当我使用new关键字并在构造函数中传递值时,它会输出false。

但是当我使用new关键字而不是将值传递给构造函数时,我会在下一步中分配它。这次它返回true。为什么呢?

class CheckStrings{
String s;
}


public class EQCheckTest {
  public static void main(String[] args) {
    String a1 = "pune";
    String a2 = "pune";
    String a3 = new String("pune");
    String a4 = new String();
    a4 = "pune";
    CheckStrings cs = new CheckStrings();
    cs.s = "pune";

    System.out.println(a1==a2); 
    System.out.println(a1==cs.s);
    System.out.println(a1==a3); 
    System.out.println(a1==a4); 
 }
}

输出:

    true
    true
    false
    true

为什么a1 == a3 false和a1 == a4是真的?

0 个答案:

没有答案