自学JAVA知识点总结 - 初级

编程语言5天前更新 AaronHzy
154 0

面向对象 - 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不发生变化
      }
    }

© 版权声明

相关文章