如图所示,为什么我们明明写了方法交换了两个变量,但是出来的时候却不变呢?
如java书中对方法参数介绍的
java中的调用是按值调用,所以调用方法后,方法入栈,并产生一个新的栈帧,产生一个新的数据在那存储着,不会影响到之前的数,可以这么理解
一开始初始化ab,ab入栈,然后调用t1方法,此时t1方法内也有一个a与b,经过交换后,里面的a=2,b=1,在他方法内,a与b是交换过后的数,但当t1出栈后,ab又变回来最先开始原来的a与b此时再输出ab则会是原来的值。
如图所示,为什么我们明明写了方法交换了两个变量,但是出来的时候却不变呢?
如java书中对方法参数介绍的
java中的调用是按值调用,所以调用方法后,方法入栈,并产生一个新的栈帧,产生一个新的数据在那存储着,不会影响到之前的数,可以这么理解
一开始初始化ab,ab入栈,然后调用t1方法,此时t1方法内也有一个a与b,经过交换后,里面的a=2,b=1,在他方法内,a与b是交换过后的数,但当t1出栈后,ab又变回来最先开始原来的a与b此时再输出ab则会是原来的值。