class Test{
  static void leftShift(int i,int j){
    i<<=j;
  }
  public static void main(String arg[]){
    int i = 4;
    int j = 2;
    leftShift(i,j);
    System.out.println(i);
 }
}运行结果为4,请各位高手分析一下过程~~

解决方案 »

  1.   

    呵呵,你别被题目给迷倒了,这里i的值是没变的,因为java里的参数传递是按值传递,不是按地址传递。
    所以这里,只是相当于把main函数中i的值复制一个出来到Test中。
      

  2.   

    说错了,是相当于把main函数中的 i 的值复制一个出来到leftShift函数中。
    结果:
    main函数中的值:i=4  j=2
    leftShift函数中的值:i=16  j=2
      

  3.   

    我不是说4楼说错了,我是说3楼的我,最后一句我打错了,要把Test改成leftShift。