黑马程序员技术交流社区
标题:
为啥交换后的值还是i : 10 j : 5
[打印本页]
作者:
wx_ao22R6RC
时间:
2015-11-8 22:32
标题:
为啥交换后的值还是i : 10 j : 5
public class TestArgsTransfer {
public static void main(String[] args) {
TestArgsTransfer tt = new TestArgsTransfer();
int i = 10;
int j = 5;
System.out.println("i:" + i + " j:" + j);//i : 10 j : 5
tt.swap(i, j);
System.out.println("i:" + i + " j:" + j);//为啥交换后的值还是i : 10 j : 5
}
//定义一个方法,交换两个变量的值
public void swap(int i,int j){
int temp = i;
i = j;
j = temp;
System.out.println("i:" + i + " j:" + j);
}
}
作者:
Mr___dangerous
时间:
2015-11-8 22:36
因为你交换的只是局部变量,对原来的变量无影响的
作者:
我若为神
时间:
2015-11-8 22:51
Java里这种规定真是扯淡
作者:
didixyy
时间:
2015-11-8 22:54
应为你修改的是局部变量,swap方法出栈后局部变量就消失了
作者:
ly631960324
时间:
2015-11-8 23:17
局部变量存在于栈内存中,方法调用结束后,所有内容被释放,不会对堆内存中的成员变量造成改变
作者:
xiaoxiao147
时间:
2015-11-8 23:21
局部变量存在于栈内存中,方法调用结束后,所有内容被释放,不会对堆内存中的成员变量造成改变
作者:
wx_ao22R6RC
时间:
2015-11-9 00:06
Mr___dangerous 发表于 2015-11-8 22:36
因为你交换的只是局部变量,对原来的变量无影响的
哦。这个样子啊,谢谢
作者:
478883662
时间:
2015-11-9 09:03
关于堆栈的问题好模糊·····
作者:
123412
时间:
2015-11-9 10:26
因为在java中基本数据类型传递的是值,而引用数据类型传递的内存地址值,所以说,上述的i,j是一个基本数据类型,他们在传递的时候,仅仅传递的就是一个值而已,他们自身并没有发生变化。
作者:
木子子木
时间:
2015-11-9 22:56
因为交换的是局部变量,局部方法执行完之后就弹出栈了!不会将交换后的值进行返回!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2