String定数プール

4603 ワード

この时間は主にいくつかの基礎知識の学習を行って、ここに置いてメモをします.
public static void main(String[] args){
    String a = "a1";
    String b = "a"+ 1;
    System.out.println(a==b);
}//true
public static void main(String[] args){
    String a = "ab";
    String bb = "b";
    String b = "a"+ bb;
    System.out.println(a==b);
}//false
public static void main(String[] args){
    String a = "ab";
    final String bb = "b";
    String b = "a"+ bb;
    System.out.println(a==b);
}//true
public static void main(String[] args){
    String a = "ab";
    final String bb = getBB();
    String b = "a"+ bb;
    System.out.println(a==b);
}
private static String getBB(){ return "b"; }//false

private static String a = "ab";
public static void main(String[] args){
    String s1 = "a";
    String s2 = "b";
    String s = s1 + s2;
    System.out.println(s == a);//false
    System.out.println(s.intern() == a);//true
}


private static String a = new String("ab");
public static void main(String[] args){
    String s1 = "a";
    String s2 = "b";
    String s = s1 + s2;
    System.out.println(s == a);//false
    System.out.println(s.intern() == a);//false
    System.out.println(s.intern() == a.intern());//false


}

上の問題の解釈については、
http://home.open-open.com/space-4097-do-blog-id-1336.html