// Zorah Fung, CSE 143 // Methods that use Value/Reference Semantics import java.util.*; public class ReferenceSemantics { public static void main(String[] args) { integer(); integerObject(); array(); array2(); list(); point(); } public static void integer() { System.out.println("integer"); int number = 0; System.out.println("before: " + number); modifyInteger(number); System.out.println("after: " + number); System.out.println(); } public static void modifyInteger(int n) { n = 42; System.out.println("in method: " + n); } public static void integerObject() { System.out.println("integer object"); IntegerObject obj = new IntegerObject(); System.out.println("before: " + obj.num); modifyIntegerObject(obj); System.out.println("after: " + obj.num); System.out.println(); } public static void modifyIntegerObject(IntegerObject n) { n.num = 42; System.out.println("in method: " + n.num); } public static void array() { System.out.println("array"); int[] array = new int[6]; System.out.println("before: " + Arrays.toString(array) + " ref: " + array); modifyArray(array); System.out.println("after: " + Arrays.toString(array) + " ref: " + array); System.out.println(); } public static void modifyArray(int[] a) { for (int i = 0; i < a.length; i++) { a[i] = (i + 1) * 11; } System.out.println("in method: " + Arrays.toString(a) + " ref: " + a); } public static void array2() { System.out.println("array2"); int[] array = new int[6]; System.out.println("before: " + Arrays.toString(array) + " ref: " + array); doNotModifyArray(array); System.out.println("after: " + Arrays.toString(array) + " ref: " + array); System.out.println(); } public static void doNotModifyArray(int[] a) { a = new int[6]; for (int i = 0; i < a.length; i++) { a[i] = (i + 1) * 11; } System.out.println("in method: " + Arrays.toString(a) + " ref: " + a); } public static void list() { System.out.println("list"); ArrayList list = new ArrayList(); System.out.println("before: " + list); modifyList(list); System.out.println("after: " + list); System.out.println(); } public static void modifyList(ArrayList list) { for (int i = 1; i <= 6; i++) { list.add(i * 11); } System.out.println("in method: " + list); } public static void point() { System.out.println("point"); Point point = new Point(); System.out.println("before: " + point); modifyPoint(point); System.out.println("after: " + point); System.out.println(); } public static void modifyPoint(Point p) { p.x = 11; p.y = 22; System.out.println("in method: " + p); } }