Sunday, December 1, 2013

parameters in function

As everyone knows, there are two ways to pass value in java. The first one is passed by value (only prime type such as: int, float, double), the other one is passed by inference(object). Given the sample code below, what is the answer?
1.
Mon Dec 20 00:00:00 JST 1999
Wed Dec 20 00:00:00 JST 2000
1
2.
Mon Dec 20 00:00:00 JST 1999
Mon Dec 20 00:00:00 JST 1999
1
3.
Wed Dec 20 00:00:00 JST 2000
Wed Dec 20 00:00:00 JST 2000
2
4.
Mon Dec 20 00:00:00 JST 1999
Wed Dec 20 00:00:00 JST 2000
2
public class Demo{
       public static void main(String[] args){
  Date d1 = new Date(99, 11, 20);
  Date d2 = new Date(99, 11, 20);
  method(d1, d2);
  System.out.println(d1);
  System.out.println(d2);
  ArrayList list = new ArrayList();
  list.add(1);
  inferencePara(list);
  System.out.println(list.get(0));
 }

 public static void method(Date d1, Date d2){
  d2.setYear(100);
  d1 = d2;
 }
 
 public static void inferencePara(ArrayList list){
  list = new ArrayList();
  list.add(2);
 }
}