在Java中,参数是按值传递的?

时间:2011-04-23 09:23:45

标签: java

  

可能重复:
  Is Java pass by reference?

大家好,

我对使用Java传递的参数有疑问,我从一本书中读到它“在Java中,参数总是按值传递”,这是什么意思?

我没有C ++和C的经验,所以对我来说理解它有点困难。 有人能解释一下吗?

3 个答案:

答案 0 :(得分:2)

是的,java方法参数总是按值传递。这意味着该方法获取参数的副本(参考类型的参考副本),因此如果方法更改参数值,则更改在方法外部不可见。

有两种替代参数传递模式:

通过引用传递 - 该方法基本上可以像调用者一样使用变量,如果它赋值变量的新值,调用者将在方法完成后看到这个新值。

Pass by name - 该参数实际上仅在方法内部被访问时进行评估,这会产生许多深远的影响。

答案 1 :(得分:0)

这意味着当您将变量传递给方法时,传递的东西是变量当前保存的值。因此,对方法参数的子项赋值不会影响该变量的值(调用方),也不会影响相反的值。

传递引用意味着被调用者接收调用者端变量的句柄。因此,方法中的赋值将影响调用者方变量。

答案 2 :(得分:0)

在Java中,一切都是对象。 Object是一个类似C的指针。但在Java中,它指向一个类的内存位置。通过值传递意味着,对象的值是什么,该值是按值传递的。例如;整数a = new Integer();整数b = new Integer(); setAInteger(b)中; public void setAInteger(Integer c){     a = c; } 在此操作之后,指向b的存储位置。可以说,在开始时a = 2500 b = 3500,在调用方法之后,新值为3500.顺便说一下,2500和3500是内存地址。