class D
{
public void change(String a)
{
a=new String("现在改变值!");
}
public void change(C c)
{
c.setA("现在改变值!");
}
}
public class C { private String a;

public C(String a)
{
this.a=a;
}
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public static void main(String[] args) 
{
D d=new D();
String a=new String("这是字符串");
System.out.println(a);
d.change(a);
System.out.println(a);

C c=new C("这是C");
System.out.println(c.getA());
d.change(c);
System.out.println(c.getA());
}}
为什么 String的值没有变  C的值变了?

解决方案 »

  1.   

    http://blog.csdn.net/ZangXT/archive/2008/06/21/2574102.aspx
    把这个例子理解了,这个问题应该能解决了。
      

  2.   

    d.change(a)只是改变了d中a的值,跟 Class C中的a没有任何关系,两个new出来的a是不同的对象,而你输出的都是Class C中的a。d.change(c)传进去的c是个javabean,改变了对象的属性,再去得到属性并输出肯定会变。