Java值传递

“在Java里面参数传递都是按值传递”
这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,所以统称按值传递。Java中方法参数传递方式是按值传递。 如果参数是基本类型,传递的是基本类型的字面量值的拷贝。 如果参数是引用类型,传递的是该参量所引用的对象在堆中地址值的拷贝。

Java赋值操作其实是包含了两个意思:1、放弃了原有的值或引用;2、得到了 = 右侧变量的值或引用。

综合上面两个知识点,下面的程序会输出什么?

public class Test {
    int age ;
    String name;
    public static void main(String[] args) {
        String x = new String("string1");
        change(x);
        System.out.println(x);

        Test t1 = new Test();
        t1.name = "1";
        t1.age = 15;
        change(t1);
        System.out.println(t1.name + " " + t1.age);
    }

    public static void change(String x) {
        x = "String2";
    }

    public static void change(Test test){
        test.age = 18;
        test.name = "123";
    }
}

需要特别注意String的赋值操作。

答案是:

string1
123 18

你可能感兴趣的:(Java值传递)