.clone(), which is mentioned by GoToLoop, gives an identical unrelated clone of any object you use it on.
The reason this happens is because of how Java objects work. An array is an object, and a variable only contains a pointer in memory to that object.
When you do
b = a, you are setting
b to the same pointer that
a has. As a result, they both point to the same object, so doing operations on any of them would do the operation on an object that they both point to. “Object” here being an integer array.
Almost anything in Java(and Processing since it uses Java) is an object. Even
String is. However, there is no need to do
.clone() on a string because, as I understand, any operations on strings result in a new unrelated object being made each time.
Then there’s Java’s garbage collector system - when you, for example, do
a = null, or otherwise get rid of all pointers to an object, i.e. leave it completely inaccessible, Java clears it from the RAM automatically sooner or later.
a = null means setting
a to a null pointer, which is literally pointing to nothingness. Keep in mind that any operations on
a when it’s set to
null will result in a
However, if you feel like optimizing your code to use less RAM, it doesn’t hurt to have a habit of setting objects and stuff to
null once you don’t need it.
Also, when you will be making your own classes(i.e. definitions of objects), keep in mind that if you store other objects inside of yours,
.clone() function will copy over the pointers to these objects, potentially making a mess of objects housing objects that are same between those first objects, and, yeah. You’d want to make a “deep copy” in that case - which would involve making
deepcopy() function in an object that calls
deepcopy() inside of all objects that it contains, to make a fully unrelated copy…
Multi-dimensional arrays (i.e.
int) are literally arrays of arrays, i.e. objects containing more objects, so you should think about this when cloning a multi-dimensional array, and figure a deep copy of such too.
This OOP (Object Oriented Programming) stuff can be a bit of a hassle to understand, but can be really useful if you get it!
…I digressed here a little, if you don’t mind. ._.