-3
public class EqualsCheck {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        Scanner sc1= new Scanner(System.in);
        String s1 = sc.next();
        String s2 = sc1.next();
        equalCheck(s1,s2);
    }

    private static void equalCheck(String s1, String s2) {
        //Using Assignment
        System.out.println(s1 == s2);

        //Using equals

        System.out.println(s1.equals(s2));

        //Printing HashCode

        System.out.println("s1 :"+s1.hashCode()+" s2: "+s2.hashCode());
    }
}

传递的字符串是:

 s1 = "abc";
 s2 = "abc";

如果我做 a s1==s2,它会返回false。为什么字符串池在这里不起作用。

4

1 回答 1

1

字符串池在这里不起作用,因为您没有将字符串放入字符串池中。

对于在运行时构造的字符串,这不会自动发生。你需要打电话String.intern()才能这样做。

于 2016-01-07T08:35:27.767 回答