public class b{
    private String s;
   
 public b(String s){this.s=s;}
    public String 
getS(){return s;}
    public void setS(String 
s){this.s=s;}
}
public class a{
    private b s;
   
 public void setS(b s){this.s=s;}
    public b 
getS(){return s;}
    public void 
change(){s.setS("defgh");}    
    public 
static void main(String[] args){
        b 
s=new b("abc");
        b s1=new 
b("aaaaa");
        a ab=new 
a();
        ab.setS(s);
   
     ab.change();
       
 s1=ab.getS();
       
 System.out.println("s:"+s.getS());
       
 System.out.println("s1:"+s1.getS());
       
 System.out.println("s.equals(s1):"+s.equals(s1));   
     
    }
}
其运行结果如下

但是把类b换成String,则s不会随着s1的改变而改变,其运行结果如下

为什么呢??
是否String通过形参赋在类a中的s后是分配另一个内存空间,而不是两个变量引用同一个内存空间呢??
其中假如把类b换成String,则s不会随着s1的改变而改变,为什么??,布布扣,bubuko.com
其中假如把类b换成String,则s不会随着s1的改变而改变,为什么??
原文地址:http://www.cnblogs.com/heysong/p/3747643.html