因为 java 是传值调用的。obj.method(k);
先将k的值拷贝到局部变量x中,然后改变x的值。此时与k没有关系了。

解决方案 »

  1.   

    结果是10。method(int x)这里的x是一个形式参数,在method被调用时生成,method结束时销毁(作用域)。
    method(10)调用时,将10也就是实际参数x的值,赋值给了形式参数x,在method里改变的是形式参数x的值,它在函数放回时就销毁了。
    而原来的实际参数x的值一直没有改变过,就是10。记住,函数调用是传值调用。(这和C/C++是一样的)关于,引用的传递,这里就先不多说了。
    自己看一下相关的java教程就知道了。
      

  2.   

    对于基元数据类型来说,JAVA是按值传送的,但对于对象来说都是按引用传送的
      

  3.   

    public class MyClass
    {
    public static void main(String args[])
    {
    int k=10;
    MyClass obj = new MyClass();
    System.out.println(obj.method(k)); }
    public int method(int x)
    {
    x= x*2;
    return x;
    }
    }
    这样写结果就是20了