Java"指针"如何工作?

SmR*_*Guy 6 java pointers

让我们说这是C++代码:

void change(int& x){
    x++;
}
Run Code Online (Sandbox Code Playgroud)

要么

void change2(int* a){
    *a++;
}
Run Code Online (Sandbox Code Playgroud)

两者都会改变全局x,对吧?

那我怎么能在java中做那样的事情呢?
具体来说,我想指向一个Vector对象

但是由于Java没有指针,我不知道该怎么做.
从搜索互联网上我看到人们说Java以其他方式做到了这一点,但我没有找到任何真实的例子.

感谢帮助!

Mar*_*ers 12

在Java中,您可以使用对象的引用而不是指针.您不能通过引用传递基本类型,但可以将基本类型包装在对象中,然后将引用传递给该对象.

Java提供了Integer包装的类型int,但是这种类型是不可变的,所以你不能在构造之后改变它的值.但是你可以使用MutableIntApache Commons:

void change(MutableInt x) {
    x.increment();
}
Run Code Online (Sandbox Code Playgroud)

调用者可以看到对x的更改.


具体来说,我想指向一个Vector对象

在编写时,Vector v = ...;您正在为变量指定向量的引用v.Java中的引用与指针非常相似.实际上,引用是使用指针在内部实现的.

Java使用pass by value.将向量传递给方法时,实际上是在复制对该向量的引用.它不会克隆载体本身.因此,在Java中传递引用与在C++中传递指针非常相似.