如下面一段代码public class TestInt 
{
public int aa(int i)
{
return i+4;
}
public static void main(String [] args)
{
int i=3;
aa(i);
System.out.println(i);
}
}怎么能把i的值改变呢?

解决方案 »

  1.   

    public class TestInt { 
        public static void aa(int[] i) { 
            i[0] += 4; 
        } 
        public static void main(String [] args) {
            int[] i= {3}; 
            aa(i); 
            System.out.println(i[0]); 
        }
    }
      

  2.   

     aa(i);
    改为:i= aa(i);
    不就可以了吗?
      

  3.   

    想改变多个值,最好就是传个对象进去,想怎么变,就怎么变,多看看oop就懂了
      

  4.   

    传对象或是数组。因为对象和数组传的是引用。基本数据类型传的是值。当传入参数时,会在函数内部copy一分放在栈中。对于对象或数组被传时结果是多个引用指向同一个对象。通过引用改变对象的状态。这种改变出了函数依然存在。
      

  5.   


    你这样是改变不了i的值的,LZ的代码存在一个错误,主函数main()这个静态方法无法
    引用非静态方法 aa(int)的。
    函数调用时,参数传递的方式主要有两种: 值传递和引用传递。
    Java使用的是值传递。值传递是把变量的值、常数或常量传递给参数。而引用传递,是把变量的所在内存中的地址传递给参数,参数通过地址找到变量的值。
    无论是在C、c++还是java中传值是无法改变实参的值的,
    就比如要交换两个整型数的值。
    java中得通过传引用的方式改变实参的值。
    所以可以传通过数组这种引用方式来改变实参的值!一楼采用的就是这个传数组引用的方法,
    二楼的方法也行,不过不太好。