public class Test{  
   static void leftshift(int i, int j){  
      i<<=j;  
     }  
   public static void main(String args[]){  
      int i=4, j=2;  
      leftshift(i,j);  
      System.out.println(i);  
     }  
     }     what is the result?  
A. 16 
B. 4 为什么答案是4啊 想不通

解决方案 »

  1.   

    leftshift(i,j); 这个方法内部并不影响外部的i
    如果懂得值传递和引用(地址)传递的区别,应该很好理解的
      

  2.   

    (1):“在Java里面参数传递都是按值传递”这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,所以统称按值传递。
    (2):在Java里面只有基本类型和按照下面这种定义方式的String是按值传递,其它的都是按引用传递。就是直接使用双引号定义字符串方式:String str = “Java私塾”;
      

  3.   

    因为只是把i的值2传到了上面的方法中,而不是把i传到上面得参数中,
    因此,i的值是2,不会改变
    public class Test{  
       static void leftshift(int i, int j){  
          i<<=j;  
    System.out.println(i);       }  
       public static void main(String args[]){  
          int i=4, j=2;  
          leftshift(i,j);  
               }  
         }  
    这样写答案回成16的