黑马程序员技术交流社区
标题:
有关函数
[打印本页]
作者:
wjj410830911
时间:
2013-11-13 19:21
标题:
有关函数
class Test {
public static void main(String[] args) {
int a=12,b=23;
System.out.println("a="+a+",b="+b);//这里应该是a= 12 b=23
change(a,b);
System.out.println("a="+a+",b="+b);//为什么第4次输出的不是 a=35 b=10呢?而是a=12 b=23 //之前已经调用了 change(a,b)方法了啊 值不是已经改变了吗?
}
public static void change(int a,int b){
System.out.println("a="+a+",b="+b);
a = a + b;
b = 10;
System.out.println("a="+a+",b="+b); }
复制代码
作者:
敗唫①輩ふ
时间:
2013-11-13 19:29
楼主:因为你是在方法里改变的局部变量的值 对于main方法里a,b的值 你并没有改变 如果a,b 你是声明在Test里的成员变量 那就改变了它们的值了
作者:
习嘻嘻
时间:
2013-11-13 19:56
一般当参数为基本数据类型是,是不会改变原本的值的,若传递的参数为数组,类,接口引用类型就会对其值有直接影响。
这里你可以直接将函数里形式参数用其他的名字代替,而不用a,b,这样可能就会对你的判断影响小一点
作者:
付凯鹏
时间:
2013-11-13 20:03
执行change(a,b);时,change只是使用了a,b的副本,并没有在函数里改变a,b的值,改变的只是a,b副本的值,因此下面输出a,b的值的时候还是原来的值。
作者:
付凯鹏
时间:
2013-11-13 21:56
可以这么理解吧。
作者:
何超
时间:
2013-11-14 07:53
本帖最后由 何超 于 2013-11-14 07:56 编辑
传递值的时候分两种 1值传递 2 引用传递
值传递的时候是不会改变本身对象的值的,而引用传递会改变本身的值,因为引用传递传给其他的是他们的地址
那么就是多个对象指向一个地址 其中一个改变其余的都改变
你这个题目里面是值传递 自然前后不会有影响了
作者:
黄炳期
时间:
2013-11-14 09:14
帖子已分类,若仍有疑惑,可重新提问
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2