Python,Java,C:按引用传递或按值传递

用户名

我只是阅读了以下有关按引用传递和按值传递意味着什么的文章:http : //qntm.org/call

因此,请确保我正确理解...这是否意味着在函数中按值调用不会更改原始输入,而不会更改该输入的本地副本?但是,由于在Java和Python中,值实际上是对值的引用,这是否意味着在函数中按值调用会改变原始输入?

约书亚·泰勒(Joshua Taylor)

这取决于您输入的确切含义,尤其取决于您是指一个变量,该变量在调用站点上作为参数出现,例如x

Object x = ...;
someMethod( x );

或者您正在谈论被调用函数将看到的实际对象,例如,实际的Object实例位于:

someMethod( new Object() );

变量(即它们引用的对象)不会改变,但是您仍然可以对所获得的对象进行处理。例如,

void appendX( StringBuilder sb ) {
  sb.append('x');
}

void foo() {
  StringBuilder builder = ...
  appendX( builder );
  builder.toString(); // will contain 'x' because you worked with the object that 
                      // is the value of the variable `builder`.  When appendX was
                      // was invoked, the value of its variable `sb` was the same 
                      // object that is the value of foo's `builder`.  Without 
                      // changing what value the variable `builder` refers to, we
                      // did "change" the object (i.e., we appended 'x').
}

但是,更新方法中的引用不会更改方法之外的任何引用。从方法内部,不能通过将方法赋值给方法的一个参数来更改方法外部引用的对象。例如:

void setNull( StringBuilder sb ) {
  sb = null;
}

void foo() {
  StringBuilder builder = ...
  appendX( builder );
  builder == null;  // false, because the value of the variable `builder` is still the 
                    // same object that it was before.  Setting variable `sb` in setNull
                    // to null doesn't affect the variable `builder`. The variables are
                    // just a name so that you can refer to an value.  The only way to
                    // what value a variable refers to is with an assignment.
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

python pandas dataframe,是按值传递还是按引用传递

来自分类Dev

Objective-C是按值传递还是按引用传递?

来自分类Dev

C#按值传递与按引用传递

来自分类Dev

c#对象按引用传递或按值传递

来自分类Dev

C按值传递数组vs按引用传递数组

来自分类Dev

c#对象按引用传递或按值传递

来自分类Dev

哪个更快?按引用传递与按值传递C ++

来自分类Dev

C:何时按值返回或传递引用

来自分类Dev

C ++是否按值或引用传递对象?

来自分类Dev

C ++中的函数重载按值或按引用传递参数

来自分类Dev

按值或引用传递容器

来自分类Dev

在Javascript中按值传递和按引用传递

来自分类Dev

在Android Adapter中按值传递和按引用传递?

来自分类Dev

对在C#中按引用传递和按值传递感到困惑

来自分类Dev

在C#中,我应该按值传递参数并返回相同的变量,还是按引用传递?

来自分类Dev

我是否正确理解C中的按值传递和按引用传递?

来自分类Dev

C ++中按引用传递和按值传递之间过载歧义的可行解决方案

来自分类Dev

在C中按指针传递/按引用传递

来自分类Dev

Python中的整数是按值或引用传递的吗?

来自分类Dev

python递归通过引用还是按值传递?

来自分类Dev

const引用何时比C ++ 11中的按值传递更好?

来自分类Dev

通过引用而不是按值传递OpenCV C ++

来自分类Dev

Java-按值传递

来自分类Dev

SystemVerilog数组是按值或引用传递的吗?

来自分类Dev

数组元素是否也按值或引用传递?

来自分类Dev

SystemVerilog数组是按值或引用传递的吗?

来自分类Dev

Java API设计-按对象传递或按值传递

来自分类Dev

Java API设计-按对象传递或按值传递

来自分类Dev

我应该按引用还是按值传递大型数组?

Related 相关文章

  1. 1

    python pandas dataframe,是按值传递还是按引用传递

  2. 2

    Objective-C是按值传递还是按引用传递?

  3. 3

    C#按值传递与按引用传递

  4. 4

    c#对象按引用传递或按值传递

  5. 5

    C按值传递数组vs按引用传递数组

  6. 6

    c#对象按引用传递或按值传递

  7. 7

    哪个更快?按引用传递与按值传递C ++

  8. 8

    C:何时按值返回或传递引用

  9. 9

    C ++是否按值或引用传递对象?

  10. 10

    C ++中的函数重载按值或按引用传递参数

  11. 11

    按值或引用传递容器

  12. 12

    在Javascript中按值传递和按引用传递

  13. 13

    在Android Adapter中按值传递和按引用传递?

  14. 14

    对在C#中按引用传递和按值传递感到困惑

  15. 15

    在C#中,我应该按值传递参数并返回相同的变量,还是按引用传递?

  16. 16

    我是否正确理解C中的按值传递和按引用传递?

  17. 17

    C ++中按引用传递和按值传递之间过载歧义的可行解决方案

  18. 18

    在C中按指针传递/按引用传递

  19. 19

    Python中的整数是按值或引用传递的吗?

  20. 20

    python递归通过引用还是按值传递?

  21. 21

    const引用何时比C ++ 11中的按值传递更好?

  22. 22

    通过引用而不是按值传递OpenCV C ++

  23. 23

    Java-按值传递

  24. 24

    SystemVerilog数组是按值或引用传递的吗?

  25. 25

    数组元素是否也按值或引用传递?

  26. 26

    SystemVerilog数组是按值或引用传递的吗?

  27. 27

    Java API设计-按对象传递或按值传递

  28. 28

    Java API设计-按对象传递或按值传递

  29. 29

    我应该按引用还是按值传递大型数组?

热门标签

归档