美文网首页
Java核心技术(卷I) 5、Java值传递

Java核心技术(卷I) 5、Java值传递

作者: kaiker | 来源:发表于2021-02-16 15:34 被阅读0次

    1、按值调用和按引用调用

    • 按值调用:方法接收的是调用者提供的值
    • 按引用调用:方法接收调用者提供的变量地址
    • 方法可以修改按引用传递的变量的值,不能修改按值传递的变量的值

    2、Java值传递

    • Java采用值传递,也就是方法得到的是所有参数值的一个副本。方法不能修改传递给它的任何参数变量内容。
    public static void triple(double x){
      x = 3 * x;
    }
    double percent = 10;
    triple(percent);
    
    修改数值参数
    • 对象作为引用参数可能被修改
    public static void triple(Employee x){
      x.raiseSalary(200); // 拷贝了一个,但是引用的对象还是一样的
    }
    harry = new Employee();
    triple(harry);
    
    修改对象参数

    一个Java swap的例子,证明其值传递的特点

    public static void swap(Employee x, Employee y)
       {
          Employee temp = x;
          x = y;
          y = temp;
          System.out.println("End of method: x=" + x.getName());
          System.out.println("End of method: y=" + y.getName());
       }
    
    • 最终副本交换了引用的对象,但原始传递的参数没有变化


      Java swap对象时的引用情况

    Java值传递的能与不能

    • 方法不能修改基本数据类型的参数
    • 方法可以改变对象参数的状态 (状态:https://www.jianshu.com/p/36ba065d1624
    • 方法不能让一个对象参数引用一个新的对象

    https://www.cnblogs.com/wugongzi/p/11297638.html 值传递

    相关文章

      网友评论

          本文标题:Java核心技术(卷I) 5、Java值传递

          本文链接:https://www.haomeiwen.com/subject/lfivxltx.html