在Java

时间:2016-01-07 08:28:47

标签: java string string-pool equality-operator

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";

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

1 个答案:

答案 0 :(得分:1)

字符串池在这里不起作用,因为你没有在字符串池中放置字符串。

对于在运行时构造的字符串,这不会自动发生。您需要致电String.intern()来执行此操作。