相关疑难解决方法(0)

Java是"通过引用传递"还是"传递价值"?

我一直认为Java是传递引用的.

但是,我看过一些博客文章(例如,这个博客)声称它不是.

我不认为我理解他们所做的区别.

解释是什么?

java methods parameter-passing pass-by-reference pass-by-value

6270
推荐指数
80
解决办法
189万
查看次数

通过引用或通过值传递?

在学习新的编程语言时,您可能遇到的一个可能的障碍是,默认情况下,该语言是按值传递还是按引用传递.

所以这是我对你们所有人的问题,用你最喜欢的语言,它是如何实际完成的?什么是可能的陷阱

当然,你最喜欢的语言可以是你曾经玩过的任何东西:流行的,模糊的,深奥的,新的,旧的 ......

language-agnostic oop parameters pass-by-reference pass-by-value

51
推荐指数
7
解决办法
2万
查看次数

什么是"名字传递",它是如何运作的?

我已经检查了维基百科,然后用Google搜索,但我还是无法理解ALGOL 60中的名称传递方式.

history parameter-passing pass-by-name algol

35
推荐指数
2
解决办法
5万
查看次数

java vs C++通过引用传递


我对以下内容感到困惑:
在C++中,我们可以通过引用将参数传递给函数(将其声明为指针或引用变量),如果我们在函数内部修改它,则当函数返回时,更改会反映给调用者.
这不是在java中发生的,我不确定我理解为什么.

例如,这是来自对象X的方法

public boolean aMethod(int id, myClass aClass)
{
   //do some logic
   aClass = new MyClass();
   //configure argument object aClass
   return true;
}
Run Code Online (Sandbox Code Playgroud)

调用代码中:

//some code processing
myClass obj = null;
if(X.aMethod(2,obj))
{
  obj.methodA();//start using the object
}
Run Code Online (Sandbox Code Playgroud)

我在C++中使用它,即返回一个通知可以使用函数参数的结果,但在java中这不起作用.
我输入if(X.aMethod(2,obj))分支,但obj为null.为什么它为空?
我没有在方法aMethod(int id,myClass aClass)中使用new分配堆中的内存地址吗?我没有在函数中传递obj的"地址"吗?我期望在调用代码中正确构造和使用obj.我误解了java中的内存吗?

c++ java function pass-by-reference

6
推荐指数
1
解决办法
5338
查看次数