日期:2014-05-20  浏览次数:20628 次

求解一个问题 关于引用类型的问题
public class Test {
String a=new String("1");
char [] c={'1','2','3'};
public static void main(String[] args) {
Test t=new Test();
t.show(t.a,t.c);
System.out.print(t.a);
System.out.print(t.c[0]);
}
public void show(String a,char c[]){
a="2";
c[0]='g';
}
}

这写代码 为什么输出的是  1和g 

而不是 2和g? 

String 在JAVA中到底属于什么数据类型啊。。。

------解决方案--------------------
String引用类型,但是java是值传递。
------解决方案--------------------
String是引用类型的,但是又很特殊,因为它的值是无法改变的,改变的只能是地址。然而当String作为参数时传递的不是地址而是值,所以你得那个代码里栈空间里只有一个地址而且没被改变,而堆里却开辟了两个空间:一个“1”,另一个是“2”