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

    java 里方法的参数传递只有一种类型:值传递;即将实际参数数值的复制品,传递到方法内,实际参数值本身不变。一般我们传递的参数可以分为两类,一类是基本类型的参数,另一类是引用对象的参数。要想区分这两个,首先需要了解java中jvm的内存模型。如下:

                             

    1.了解完jvm的内存模型后,我们先了解一下基本类型的参数传递,假设 为我们需要传入的实参,i 为与实参对应的形参,jvm则将实参和形参分别存入栈stack中,效果如下图:

                            

     因此基本类型的参数传递中,形参的数值改变不会引起相应的实参的数值发生改变(因为他们存放在不同的地址中)。

    2.引用对象的参数

    由jvm内存机制我们可以了解到,我们自己定义的对象的数据存在堆heap中,当我们引用对象时,就会把对象的数据在堆中的地址存储在栈中。即栈中实参的值就是我们引用的对象的数据在堆中的地址。而我们java中方法参数传递都是值传递,故实参会把地址复制一份给形参,效果如下图:

                        

    所以对象类型的参数在方法中形参所引用的地址的数据变化时,相应实参的数据也会变化。

  • 相关阅读:
    从rnn到lstm,再到seq2seq(一)
    tensorflow world language model
    sparse_tensor feed_dict的时候十分不方便。
    MAC OS X 的环境配置加载顺序
    MAC连接HHKB/其他外接键盘的时候禁用自带键盘的设置
    linux suspend的进程如何恢复?
    ubuntu16 升级 tmux 2.9
    C++ 统计运行时间之弱智方法
    shell之引号嵌套引号大全
    统一化命名
  • 原文地址:https://www.cnblogs.com/wfswf/p/14616398.html
Copyright © 2011-2022 走看看