关于string的一段代码

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[]数组对象的一部分,并不会对地址有影响,改变的是其中的一部分内容而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值