在Java中按引用传递与按值传递
Passing by reference vs by value in Java
我来自C/c++世界。我注意到在许多帖子中,人们不接受在Java中存在"引用传递"(对于非原语)的说法;他们的论点是,在这种情况下,引用了一个副本。我无法理解这种理由,因为这实际上是在C中我们通过引用传递时发生的事情(采取指针的副本)。对于我对Java的一点了解,我想说:
- 基本类型是按值传递的。
- 非基本类型通过引用传递。
我错了吗?
在c++中,考虑函数:void func(Type &arg);
。在这里,如果更改arg
(不是arg的内容,而是实际变量),则调用者对传入参数的视图已经完全改变。这是参照传递。与void func(Type *arg);
对比。在这里,您可以更改arg
的内容,但是如果您将arg
分配给某些东西,则由于指针的值传递,这只是局部更改。
在Java中,你在所有复杂类型上使用pass by(不可见)指针
相关文章:
- 何时应通过引用传递矢量参数而不是按值传递矢量参数?
- 棘手的按值传递和按引用递归问题传递
- 不同于按值传递和常量引用传递的程序集
- 按值传递变量与按引用传递变量具有相同的结果
- 为什么按值传递QStringView比引用常量更快?
- 获取 std::函数以推断按引用传递/按值传递
- C++/11 auto 关键字是在更有效时推导参数进行按引用传递,还是始终按值传递?
- 按值和按引用差异的函数模板
- 布尔值是通过引用传递的,但我仍然在 cpp 中遇到编译错误
- 运算符 = 回合侧一个按值秒按引用
- 按值或常量引用传递函数
- 按值与按引用读取C++向量
- 修改向量的元素(按值、按引用) 函数C++
- 按值或常量引用传递
- 函数返回值与修改引用传递的值
- 通过构造函数中的值或常量引用传递的参数
- 返回值或修改引用传递的参数是否更快?
- 按值将类型结构传递给函数,错误:声明"average"中的两个或多个数据类型!!-
- c++中的函数按值或按引用返回
- 哪个更好:按值或按常量引用返回std::string