您的位置:首页 > 编程语言

关于string的一段代码

2016-05-14 21:49 411 查看
public class StringTest {
String str = "zhangqiang";
char[] ch = {'a','b','c'};
public static void main(String[] args) {
StringTest st = new StringTest();
exchange(st.str,st.ch);
System.out.println(st.str+" and ");
System.out.println(st.ch);
}

private static void exchange(String str, char[] ch) {
// TODO Auto-generated method stub
str = "zq";
ch[0] = 'g';
}
}


理解:

String str = “zhangqiang”;String作为引用类型,当这句话执行时(假设串池为空)首先会创建一个实例(具有自己的地址)同时 在串池中赋值,同理char[]为数组类型,也会创建自己的数组空间(具有自己的地址),当调用exchange方法时, 对于参数变量str来说,相当于有一个String变量str(只不过名字相同)指向成员变量str(实际是指向成员变量的地址);

而对于str = “zq”;相当于str重新创建了自己的实例(自己的地址,和上面的地址不同),该地址空间中存放的是“zq”; 所以当输出st.str实际取得的是成员变量的地址,当然会输出“zhangqiang”;

而ch[0]=’g’;他只是改变了该char[]数组对象的一部分,并不会对地址有影响,改变的是其中的一部分内容而已。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: