Java的值传递

来源:互联网 发布:星际2 天梯数据查询 编辑:程序博客网 时间:2024/06/06 07:10
    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;}
0 0
原创粉丝点击