Java函数传递,不是除了基本类型以外就是引用吗,这里的引用更像C++里的指针 为什么会有下面这个情况?
- Java code
public class Demo5{ public static void swap(P a,P b){//交换指向 P tmp=null; tmp=a; a=b; b=tmp; } public static void fun(P a){//改变var a.var=100; } public static void main(String[] args){ P a=new P(1); P b=new P(2); System.out.println("a="+a.var); System.out.println("b="+b.var); swap(a,b); System.out.println("a="+a.var); System.out.println("b="+b.var); //为什么这里没有交换? fun(a); System.out.println("a="+a.var); //这里的值却改变了? }}class P{ public int var; public P(int var){ this.var=var; }}
------解决方案--------------------------------------------------------
老生长谈的问题了
swap方法,是交换的该方法下的两个同名局部变量a,b。并没有交换到main方法传递过来的a,b
你把swap方法的两个a,b换成c,d。把名字改一下就清晰点了。