关于string的一段代码

来源:互联网 发布:我的世界贴吧手机版js 编辑:程序博客网 时间:2024/05/20 07:35
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[]数组对象的一部分,并不会对地址有影响,改变的是其中的一部分内容而已。

0 0
原创粉丝点击