java 编程语言 关于String的一点疑问
代码
public  class ClassDemo {
	int x=0;
}
public class Test{
      public static void append(String c){c="abcc";}	
      public static void append(ClassDemo c){c.x=23;}
      public static void main(String[] arg) {
		String s="abc";
		append(s);
		System.out.println(s);		
		ClassDemo cd=new ClassDemo();
		System.out.println("ClassDemo.x="+cd.x);
		append(cd);
		System.out.println(cd.x);
	}
}
运行结果:
abc
ClassDemo.x=0
23
疑问:为什么String 在方法中改变值没有影响,而自定义类型改变值了有影响,String 和自定义类型都是引用类型,为什么结果不一样了,自定义类型DemoTest 申明为 final 结果还是 32  
------解决方案--------------------
问题是这样的:
在方法中,你传递的引用参数是一个地址的复制,他能访问到对应地址里的值信息。当你对这个地址重新复制的时候,不影响你的原参数信息。
所以,为了对你对象中值进行改变,我们将信息进行封装成类。其实,在你传递给自定义类型的时候,你修改其内部的属性信息,就相当于,对应的属性地址发生了变化,这个变化是在对象内部实现的。