Java的值传递

    public static void main(String[] args){
    String A = "HelloWorld";
    String C = A;
    C = Change(A);

    System.out.println(A);
    //结果为: HelloWorld
}
    public static String Change(String B){
    B = "str";
    return B;
}

可以看到代码的运行结果为a. 并 不是 b.
分析: 由于Java是值传递,所以形参B只是简单拷贝了实参A的引用值.
如图:这里写图片描述
而执行完B = “b”;后B指向了字符串“str”;A还是指向“HelloWorld”
所以A没有被改变。

那么,如果如何在Change中改变A的值呢,可以用一个类封装以下:
例如:
Class Temp{
public String string;
public Temp(String s){
string = s;
}
}

然后:

    public static void main(String[] args){
    String A = "HelloWorld";
    String C = A;

    Temp tem = new Temp(A);
    C = Change(tem);
    A = tem.string;

    System.out.println(A);
    //结果为: str
}
    public static String Change(Temp B){
    B.string = "str";    
    return B;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值