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的值变了?