面向对象 - Java参数传值机制
参数传值机制
-
- 基本数据类型参数的传值:Java中,方法中所有参数都是“值传递”,传递的是值的副本。也就是说,得到的是“原参数的复印件,而不是原件”,因此,复印件改变不会影响原件。
- 引用类型参数的传值:传递的是值的副本,但是引用类型指的是“对象的地址”。因此,副本和原参数都指向了同一个“地址”,改变“副本指向地址的对象的值”,意味着原参数指向对象的值也发生了改变。
package test; public class Test{ String name; public static void main(String[] args) { test t = new test("黄泽雨"); //创建对象并赋值name t.test1(t); //调用test.test1方法,并将t传递给test1.u变量 System.out.println(t.name); //输出name,在test1方法中,修改了name的值,原参数也会被改变,输出"黄泽雷" t.test2(t); System.out.println(t.name); //test2创建的新对象不影响当前对象中name的值,所以不发生变化,还是输出"黄泽雷" } public test(String name) { this.name = name; } public void test1(test u){ //从main传递来的 t 赋值给局部变量u u.name="黄泽雷"; //改变name的值,此时原参数name也发生了变化 } public void test2(test u){ //从main传递来的 t 赋值给局部变量u u = new test("黄泽风"); //新建对象不影响上一个对象,所以上一个对象的name不发生变化 } }