Section 9.10 Check Point Questions4 questions
9.10.1
Describe the difference between passing a parameter of a primitive type and passing a parameter of a reference type. Show the output of the following programs:
public class Test { public static void main(String[] args) { Count myCount = new Count(); int times = 0; for (int i = 0; i < 100; i++) increment(myCount, times); System.out.println("count is " + myCount.count); System.out.println("times is " + times); } public static void increment(Count c, int times) { c.count++; times++; } } class Count { public int count; public Count(int c) { count = c; } public Count() { count = 1; } }
9.10.2
Show the output of the following program:
public class Test { public static void main(String[] args) { Circle circle1 = new Circle(1); Circle circle2 = new Circle(2); swap1(circle1, circle2); System.out.println("After swap1: circle1 = " + circle1.radius + " circle2 = " + circle2.radius); swap2(circle1, circle2); System.out.println("After swap2: circle1 = " + circle1.radius + " circle2 = " + circle2.radius); } public static void swap1(Circle x, Circle y) { Circle temp = x; x = y; y = temp; } public static void swap2(Circle x, Circle y) { double temp = x.radius; x.radius = y.radius; y.radius = temp; } } class Circle { double radius; Circle(double newRadius) { radius = newRadius; } }
9.10.3
Show the output of the following code:
(a) public class Test { public static void main(String[] args) { int[] a = {1, 2}; swap(a[0], a[1]); System.out.println("a[0] = " + a[0] + " a[1] = " + a[1]); } public static void swap(int n1, int n2) { int temp = n1; n1 = n2; n2 = temp; } } (b) public class Test { public static void main(String[] args) { int[] a = {1, 2}; swap(a); System.out.println("a[0] = " + a[0] + " a[1] = " + a[1]); } public static void swap(int[] a) { int temp = a[0]; a[0] = a[1]; a[1] = temp; } } (c) public class Test { public static void main(String[] args) { T t = new T(); swap(t); System.out.println("e1 = " + t.e1 + " e2 = " + t.e2); } public static void swap(T t) { int temp = t.e1; t.e1 = t.e2; t.e2 = temp; } } class T { int e1 = 1; int e2 = 2; } (d) public class Test { public static void main(String[] args) { T t1 = new T(); T t2 = new T(); System.out.println("t1's i = " + t1.i + " and j = " + t1.j); System.out.println("t2's i = " + t2.i + " and j = " + t2.j); } } class T { static int i = 0; int j = 0; T() { i++; j = 1; } }
9.10.4
What is the output of the following programs?
(a) import java.util.Date; public class Test { public static void main(String[] args) { Date date = null; m1(date); System.out.println(date); } public static void m1(Date date) { date = new Date(); } } (b) import java.util.Date; public class Test { public static void main(String[] args) { Date date = new Date(1234567); m1(date); System.out.println(date.getTime()); } public static void m1(Date date) { date = new Date(7654321); } } (c) import java.util.Date; public class Test { public static void main(String[] args) { Date date = new Date(1234567); m1(date); System.out.println(date.getTime()); } public static void m1(Date date) { date.setTime(7654321); } } (d) import java.util.Date; public class Test { public static void main(String[] args) { Date date = new Date(1234567); m1(date); System.out.println(date.getTime()); } public static void m1(Date date) { date = null; } }