Lets say this is the C++ code:
void change(int& x){
x++;
}
or
void change2(int* a){
*a++;
}
Both will change the global x, right?
So how can I do something like that in java?
Specifically, I want to point to a Vector object
But since Java has no pointers, I’m not sure what to do.
From searching the internet I saw people saying that Java does that in some other way, but I haven’t found any real example.
Thanks for
help!
In Java, instead of pointers you have references to objects. You cannot pass a primitive type by reference, but you can wrap a primitive type inside an object and then pass a reference to that object.
Java provides the type
Integerwhich wrapsint, however this type is immutable so you cannot change its value after construction. You could however useMutableIntfrom Apache Commons:The change to x will be visible to the caller.
When you write
Vector v = ...;you are assigning a reference to a vector to the variablev. A reference in Java is very similar to a pointer. References are in fact implemented internally using pointers.Java uses pass by value. When you pass a vector to a method, you are actually copying a reference to that vector. It does not clone the vector itself. So passing a reference in Java is very similar to passing a pointer in C++.