Stringクラシックメモリ指向面接問題

3026 ワード

1
public static void main(String[] args) {  
        String a = "a1";  
        String b = "a" + 1;  
        System.out.println(a == b);  
    } 
2
public static void main(String[] args) {   
        String a = "ab";   
        String bb = "b";   
        String b = "a" + bb;   
        System.out.println(a == b);   
    } 
3
public static void main(String[] args) {   
        String a = "ab";   
        final String bb = "b";   
        String b = "a" + bb;   
        System.out.println(a == b);   
    } 
4
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";   
    } 
5
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);   
    System.out.println(s.intern() == a);   
} 
6
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);   
        System.out.println(s.intern() == a);   
        System.out.println(s.intern() == a.intern());   
    } 
=========================================================================================================
 
  

3、       
1)true
         :            (  ),                ,       。
2)false
            String       ,                ,         String     。                , String               。
 3)true
               ,          String      ,                。
4)false
           :final String bb = getBB();   final String bb = new String(“b”);    。    return “b”        String    ”b”,  bb     final。       final         ,     bb     String       ,  getBB()   String        ,final String       String           。
5)false,true
          intern()       。JDK API    intern()      :
                   。
               ,    String      。
        intern    ,             String       (  equals(Object)     ),         。  ,   String        ,     String      。
           :          s   t,     s.equals(t)   true  ,s.intern() == t.intern()    true。
                           intern       。
              。           。
6)false,false,true