// This class is an example using points public class PointClient { public static void main(String[] args) { Point p = new Point(1, 2); System.out.println("main: Before = " + p); change1(p); System.out.println("main: After change1 = " + p); change2(p); System.out.println("main: After change2 = " + p); // approach 2 doesn't work, need x=change(x) pattern p = change3(p); System.out.println("main: After change3 = " + p); } public static void change1(Point p) { System.out.println("change1: Before = " + p); p.x = 14; System.out.println("change1: After = " + p); } public static void change2(Point p) { System.out.println("change2: Before = " + p); p = new Point(7, 8); System.out.println("change2: After = " + p); } public static Point change2(Point p) { System.out.println("change3: Before = " + p); p = new Point(7, 8); System.out.println("change3: After = " + p); return p; } }