Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中是否有类似于“引用类型”的内容&&引用;在C++;?_Java_C++ - Fatal编程技术网

Java中是否有类似于“引用类型”的内容&&引用;在C++;?

Java中是否有类似于“引用类型”的内容&&引用;在C++;?,java,c++,Java,C++,我知道在Java中,除了几个基本类型之外,所有的东西都是引用类型(对象)。但是,我没有找到一个简单的方法来做操作,通常是通过使用C++中的引用来完成的。事实上,我认为java中的引用有点像C++中的指针,因为如果我给另一个对象赋值,这个变量引用的前一个对象就不会受到影响。然而,在C++中,如果我有一个 int < ,我把 int和b>代码>“a”的引用,那么这两个词实际上是同一个东西——“B”的赋值将改变“a”的值。 我的问题的原因是我正在编写一个BST ADT,我遇到了一些麻烦,我会用C++中

我知道在Java中,除了几个基本类型之外,所有的东西都是引用类型(对象)。但是,我没有找到一个简单的方法来做操作,通常是通过使用C++中的引用来完成的。事实上,我认为java中的引用有点像C++中的指针,因为如果我给另一个对象赋值,这个变量引用的前一个对象就不会受到影响。然而,在C++中,如果我有一个<代码> int < <代码>,我把<代码> int和b>代码>“a”的引用,那么这两个词实际上是同一个东西——“B”的赋值将改变“a”的值。 我的问题的原因是我正在编写一个BST ADT,我遇到了一些麻烦,我会用C++中的引用来解决。 例如,我想实现
add
方法:

void添加(K键,V值){
如果(此键等于(键))
this.val=val;
节点子节点=下一个(键);
//next是根据键确定下一层中的子级的函数
if(child!=null)
添加(key,val);
否则{
…//解决这个问题
}
}

现在,如果我正在写C++,我可以让<代码> NeX/Cuth>返回引用和<代码>子< /C>节点,这样我只需要让<代码>子=新节点(key,Var);<代码>我完成了。但在Java中,同一语句只会将

子节点
分配给另一个节点,树不会受到影响。

在Java中,无法使一个int变量“指向”与另一个int变量相同的内存位置。完全不可能

但是,有一些自定义类型,例如可以执行此任务的类型:

AtomicInteger x = new AtomicInteger();
x.set(10);
m(x);
System.out.println(x); // prints 20

...

void m(AtomicInteger x) {
    x.set(20);
}

这并不能帮助您“适应现有的API”,但这就是重点。如果我编写了一个接收
int
参数的方法,我知道在我的方法执行期间,任何东西都不可能弄乱它。这是很好的,java故意不允许你在没有明确同意的情况下(这是一个类型为<代码> AtomicInteger < /C++ >的形式)来打破这个。< /P>什么java调用引用,C++调用指针。(NPE是相关的残余)java没有C++引用。Java参数只是传递值(原语或指针)。谢谢您的回复。我知道java引用基本上是C++中的指针。因此,我不需要在爪哇中找到等价的C++引用。你已经回答了我的问题。谢谢你的回答。对于java java java,我觉得它很新,我发现它不能使引用比C++更不方便。@ JAMESTZ,我强烈建议你不要像在C++中那样在Java中编码,而是学习如何用Java编程。你需要用不同的方式解决问题,否则java编程将是一个痛苦的经历(如果精通C++程序,爪哇开发人员精通java可能不喜欢读或触摸你的代码)。