Pointers in Minitab
Java does not have direct pointer manipulation like in C or C++. Instead, it uses references for objects. However, we can demonstrate a similar concept using object references and primitive wrapper classes.
public class Pointers {
// This method won't change the value of num in the calling method
public static void zeroValue(Integer num) {
num = 0;
}
// This method will change the value of the Integer object
public static void zeroReference(Integer[] numRef) {
numRef[0] = 0;
}
public static void main(String[] args) {
Integer i = 1;
System.out.println("initial: " + i);
zeroValue(i);
System.out.println("zeroValue: " + i);
// We use an array to simulate a pointer to the Integer object
Integer[] iRef = {i};
zeroReference(iRef);
i = iRef[0];
System.out.println("zeroReference: " + i);
// In Java, we can't print memory addresses directly
// But we can print the hashcode of the object
System.out.println("object hashcode: " + System.identityHashCode(i));
}
}In this Java example, we demonstrate a concept similar to pointers using object references.
The
zeroValuemethod takes anIntegerparameter. In Java,Integeris an object wrapper for the primitiveinttype. When we passitozeroValue, Java creates a newIntegerobject with the same value. Changes to this new object don’t affect the originaliinmain.The
zeroReferencemethod takes anIntegerarray as a parameter. We use this array to simulate a pointer to ourIntegerobject. By modifying the first element of this array, we can change the value of the originalIntegerobject.In the
mainmethod, we first callzeroValue, which doesn’t change the originali. Then we create an array containingi, pass this array tozeroReference, and updateiwith the changed value.Java doesn’t allow direct access to memory addresses like in some other languages. Instead, we use
System.identityHashCode()to get a unique identifier for the object, which serves a similar purpose in this demonstration.
When you run this program, you’ll see output similar to this:
initial: 1
zeroValue: 1
zeroReference: 0
object hashcode: 1956725890This example shows that zeroValue doesn’t change the i in main, but zeroReference does because it has a reference to the actual Integer object.
Remember, while this example demonstrates a concept similar to pointers, Java’s memory management and reference system work differently from languages with explicit pointer manipulation.