String s1=new String("1"+"2");
String s2="1"+"2";
各创建了几个对象

解决方案 »

  1.   

    String s2="1"+"2"; 这个1个String s1=new String("1"+"2"); 几个?
      

  2.   

    以前见过一个帖子,说String类 有两种创建对象的方式
    1." " 
    2.new
    所以认为String s1=new String("1"+"2"); 是创建了两个对象。
    String s2="1"+"2";自然是创建了一个对象
      

  3.   

    String s1=new String("1"+"2"); 第一个对象 "1"第二个对象 "2"第三个对象 "1" + "2"第四个对象: new String(1" + "2");第二个语句中:String s2="1"+"2"; 编译器发现已经有"1" , 直接指向"1"的引用,不创建对象,编译器发现已经有"2" , 直接指向"2"的引用,不创建对象,编译器发现已经有 "1" +"2" , 直接指向"2"的引用,不创建对象,共有: 四个对象
    如何检测结果的正确性? 用==号测试, 这个测试用来判断对象的id是否一致.[注意,不同于equals方法] public static void main(String[] args) {
    // TODO Auto-generated method stub
    String s1=new String("1"+"2"); 
    String s2="1"+"2"; 

    System.out.println(s2 == "1"+"2");  //返回为真
                      System.out.println(s2 == s1);  //返回为false


    }
      

  4.   

    看我这个帖子吧,看玩就一切都懂了。
    http://topic.csdn.net/u/20090519/18/7b8cf7ef-bc06-4d26-8a2c-692eb0562231.html
      

  5.   

    String s1=new String("1"+"2"); 2个 s1和new的这个
    String s2="1"+"2"; 1个