public class duixiang {
public static void main(String [] args){
String ab = "5";
String b=ab;
ab="6";
System.out.println(ab);
System.out.println(b);
}
}
这个的结果为什么ab=6,b=5,b指向的是ab的引用
public class duixiang {
public static void main(String [] args){
String ab = "5";
String b=new String();
b=ab;
ab="6";
System.out.println(ab);
System.out.println(b);
}
}
我觉得这样才是ab=6,b=5

解决方案 »

  1.   

    ab指向常量池的"5"
    然后b=ab,所以b也指向常量池的"5"
    然后ab指向常量池的"6"
    所以ab=6,b=5
    有什么问题?
      

  2.   


    public class duixiang {
        public static void main(String [] args){
            String ab = "5";
            String b=ab;//现在,b,ab都指向常量池中的"5"
            ab="6";//现在,ab指向常量池中新产生的"6",而原来的"5"依旧存在,
                     //这里只是改变了ab的指向,b仍旧指向"5"
            System.out.println(ab);
            System.out.println(b);
        }
    }
      

  3.   

    String b=ab;
    一看就没错啊,ab把值给b了呀
      

  4.   

    用等量代换解释更容易理解
    String ab = "5";//开始ab="5";
            String b=ab;//b=ab=5;也就是说b="5"
            ab="6";//让ab="6"
            System.out.println(ab);//输出6
            System.out.println(b);//输出5
      

  5.   

    String类是按值传递的唯一一个引用类型.