zoukankan      html  css  js  c++  java
  • 参数传递

     首先下结论:Java中所有方法的参数传递都是按值调用。

      在C中,方法的参数传递分为两种:值调用和引用调用。值传递表示方法接收到的是调用者提供的值;按引用调用表示方法接收到的是调用者提供的变量地址。

      在Java中,方法总是采用按值调用的方法来传递参数,也就是说,在Java中所有的方法得到的都是所有的参数值的一个拷贝。特别的是,方法不能修改传递给它的任何参数变量的内容。

      下面是参数为基本数据类型的情况:

    public static void tripleValue(double x){
        x = 3 * x;
    }
    
    main{
    double a = 10;
    tripleValue(a);
    }
    得到结果是:10

    下面看一下具体的执行过程:

    1,x被初始化为percent值得一个拷贝(也就是10)

    2,x被乘以3后等于30.但是此时a仍然是10

    3,这个方法结束之后,参数变量x不再使用。如下图所示

    下面我们来看参数是对象引用的情况:

    trupleSalary(Emploee x){
        x.raiseSalary(200);
    }
    
    main{
        harry = new Employee(...);
        trypleSalary(harry);
    }

    得到结果是三倍的薪水。具体的执行过程如下:

    1,x被初始化为harry的拷贝。这里是一个对象的引用

    2,raiseSalary方法应用于这个对象的引用。x和harry同时引用的那个Employee对象的薪金提高了200%;

    3,方法结束后,参数变量x不再使用。当然,对象变量harry继续引用那个薪金增至3倍的雇员对象。如下图所示

    方法得到的是对象引用的拷贝,对象引用及其他的拷贝同时引用同一个对象

    说明:对象引用在这里实际上也是按值传递的。而非引用调用

  • 相关阅读:
    HelpersSimpleCurl
    HelpersSessions
    HelpersReservedWords
    关于Java加载属性文件放在web容器不好使的解决办法
    (更新)Java + 腾讯企业邮箱 + javamail + SSL 发送邮件
    Java + 腾讯企业邮箱 + javamail + SSL 发送邮件
    struts2实现改变超链接的显示方式
    struts2 的正则表达式验证不起作用解决办法
    Hibernate5.1.0的hello word
    hibernateTools插件安装
  • 原文地址:https://www.cnblogs.com/Joey777210/p/11759474.html
Copyright © 2011-2022 走看看