参数传递的问题 int inum=11;private void H(int inum){ inum=inum+20;}出来后 inum为什么还是11;我希望得到11+20=31;当然我是希望通过形参传递得到,而不是用H函数的返回值,怎么做到呀? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【hafoo】截止到2008-07-02 00:05:12的历史汇总数据(不包括此帖):发帖的总数量:11 发帖的总分数:210 结贴的总数量:8 结贴的总分数:110 无满意结贴数:3 无满意结贴分:100 未结的帖子数:3 未结的总分数:100 结贴的百分比:72.73 % 结分的百分比:52.38 % 无满意结贴率:37.50 % 无满意结分率:90.91 % 楼主加油 int inum = 11; private void H(int inum) { this.inum = inum + 20; } int inum = 11; private void H(int inum) { this.inum = inum + 20; } 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); }} 一个是值传递,一个是地址传递,你这个参数在方法内,还有你的参数是值传递,所以还是那个值!加上this就可以 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这个变量 //给出个返回值就行了private int H(int inum) { inum=inum+20; return inum;} int inum = 11; private void H(int inum) { this.inum = inum + 20; } int inum=11; private void H(int inum) { inum=inum+20; //这里的inum是H(int inum)中的inum} System.out.println(inum);//这里的才是那个第一行的inum,这作用域有关 我已经给AbnormalGK这个函数一个返回值,给Arraylenght用了,所以现在要inumber的值改变就没办法了 java里面有两种传递机制:按值传递和按引用传递。按值传递会产生两个副本,两个副本之间没有影响,而你的方法修改的只是其中一个副本的值,所以原来的值不会改变。按引用传递之产生一个副本,所以方法内的和原先的都指向内存里的同一个地址,都代表同一个对象,虽然有可能是不同的变量。LZ的代码应该是按值传递。 基础类型为按值传递,如:int,char,double,float,String等非基本类型为按引用传递,如:ArrayList等等如果需要按引用传递基础类型,需要使用基础类型的包装类,如 int -> Integer ,double -> Double 函数的参数属于函数的“局部”变量。它会屏蔽同名的类变量,即与函数局部变量同名的类变量在函数内部不可见。你可以换个名字,或者在类变量前加个this关键字,像上面说的那样。 说明: 在 method(_____) 内定义的变量只在{}内有效 我的代码是按照值来传递的,但是我想改为按照引用来传递,怎么改呀?根据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); 你没把参数传进来,当然没变int inum=11; private void H(int num) { inum=num+20; } 写成这样你应该明白了吧 用java怎样做安装包 哪裏有各種bom對象和dom對象的API文檔? 达人帮忙~关于String (byte[],int)的用法..在线等! 各位专家门:jdk1.4.x与其前辈jdk1.1作了多少重要的改进? 又是jdbc的问题。非常奇怪 关于高等数学中积分的问题,不知道发什么地方,就发这里吧! 一个幼稚的问题,急需帮助!!!! 请问一个奇怪的问题! 请问,在JAVA里,有什么方法可以保存一个图像文件(比如*.jpg格式的)到数据库里去.... 泛型小疑问 这是一个拿分的问题,别错过~~ 一个java 题目
楼主【hafoo】截止到2008-07-02 00:05:12的历史汇总数据(不包括此帖):
发帖的总数量:11 发帖的总分数:210
结贴的总数量:8 结贴的总分数:110
无满意结贴数:3 无满意结贴分:100
未结的帖子数:3 未结的总分数:100
结贴的百分比:72.73 % 结分的百分比:52.38 %
无满意结贴率:37.50 % 无满意结分率:90.91 %
楼主加油
this.inum = inum + 20;
}
this.inum = inum + 20;
}
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);
}
}
this.inumber=inumber+20;
}int inumber=11;
AbnormalGK( param, strReturn, Arraylenght,inumber,nstep );
这样子不行呀!!!!!
提示this没有inumber这个变量
//给出个返回值就行了private int H(int inum)
{
inum=inum+20;
return inum;
}
this.inum = inum + 20;
}
int inum=11;
private void H(int inum)
{
inum=inum+20; //这里的inum是H(int inum)中的inum
}
System.out.println(inum);//这里的才是那个第一行的inum,这作用域有关
我已经给AbnormalGK这个函数一个返回值,给Arraylenght用了,所以现在要inumber的值改变就没办法了
按值传递会产生两个副本,两个副本之间没有影响,而你的方法修改的只是其中一个副本的值,所以原来的值不会改变。
按引用传递之产生一个副本,所以方法内的和原先的都指向内存里的同一个地址,都代表同一个对象,虽然有可能是不同的变量。
LZ的代码应该是按值传递。
非基本类型为按引用传递,如:ArrayList等等
如果需要按引用传递基础类型,需要使用基础类型的包装类,如 int -> Integer ,double -> Double
根据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);
private void H(int num)
{
inum=num+20;
} 写成这样你应该明白了吧