让我们说这是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++中传递指针非常相似.
| 归档时间: |
|
| 查看次数: |
5096 次 |
| 最近记录: |