int inum=11;
private void H(int inum)
{
 inum=inum+20;
}
出来后 inum为什么还是11;我希望得到11+20=31;
当然我是希望通过形参传递得到,而不是用H函数的返回值,怎么做到呀?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【hafoo】截止到2008-07-02 00:05:12的历史汇总数据(不包括此帖):
    发帖的总数量:11                       发帖的总分数:210                      
    结贴的总数量:8                        结贴的总分数:110                      
    无满意结贴数:3                        无满意结贴分:100                      
    未结的帖子数:3                        未结的总分数:100                      
    结贴的百分比:72.73 %               结分的百分比:52.38 %                  
    无满意结贴率:37.50 %               无满意结分率:90.91 %                  
    楼主加油
      

  2.   

    int inum = 11; private void H(int inum) {
    this.inum = inum + 20;
    }
      

  3.   

    int inum = 11; private void H(int inum) {
    this.inum = inum + 20;
    }
      

  4.   

    public class Test {
    int inum = 11; private void H(int inum) {
    this.inum = inum + 20;
    } public static void main(String args[]) {
    Test t = new Test();
    t.H(t.inum);
    System.out.println(t.inum);
    }
    }
      

  5.   

    一个是值传递,一个是地址传递,你这个参数在方法内,还有你的参数是值传递,所以还是那个值!加上this就可以
      

  6.   

    int AbnormalGK(byte[] param, byte[] strReturn, int Arraylenght,int inumber,int nstep ) {
       this.inumber=inumber+20;
    }int inumber=11;
    AbnormalGK( param, strReturn,  Arraylenght,inumber,nstep );
    这样子不行呀!!!!!
    提示this没有inumber这个变量
      

  7.   


    //给出个返回值就行了private int H(int inum) 

    inum=inum+20; 
    return inum;

      

  8.   

    int inum = 11; private void H(int inum) { 
    this.inum = inum + 20; 
    }
      

  9.   


    int inum=11; 
    private void H(int inum) 

       inum=inum+20; //这里的inum是H(int inum)中的inum

    System.out.println(inum);//这里的才是那个第一行的inum,这作用域有关
      

  10.   


    我已经给AbnormalGK这个函数一个返回值,给Arraylenght用了,所以现在要inumber的值改变就没办法了
      

  11.   

    java里面有两种传递机制:按值传递和按引用传递。
    按值传递会产生两个副本,两个副本之间没有影响,而你的方法修改的只是其中一个副本的值,所以原来的值不会改变。
    按引用传递之产生一个副本,所以方法内的和原先的都指向内存里的同一个地址,都代表同一个对象,虽然有可能是不同的变量。
    LZ的代码应该是按值传递。
      

  12.   

    基础类型为按值传递,如:int,char,double,float,String等
    非基本类型为按引用传递,如:ArrayList等等
    如果需要按引用传递基础类型,需要使用基础类型的包装类,如 int -> Integer ,double -> Double
      

  13.   

    函数的参数属于函数的“局部”变量。它会屏蔽同名的类变量,即与函数局部变量同名的类变量在函数内部不可见。你可以换个名字,或者在类变量前加个this关键字,像上面说的那样。
      

  14.   

    说明:  在 method(_____)  内定义的变量只在{}内有效
      

  15.   

    我的代码是按照值来传递的,但是我想改为按照引用来传递,怎么改呀?
    根据15楼的建议我改成如下的了,可是还是不行呀
    int AbnormalGK(byte[] param, byte[] strReturn, int Arraylenght,Integer inumber,int nstep ) { 
      this.inumber=inumber+20; 
    } int inumber=11; 
    Integer iNumber=inumber;
    AbnormalGK( param, strReturn,  Arraylenght,iNumber,nstep );
    inumber=(int)iNumber.intValue();
    Log.getInstance().outLog("out参数个数:"+inumber); 
      

  16.   

    你没把参数传进来,当然没变int inum=11; 
    private void H(int num) 

    inum=num+20; 
    } 写成这样你应该明白了吧