String交换:为何这个结果AA和BB并没有交换?

public class Transfer {

    public static void main(String[] args){
        String i="AA";
        String j="BB";
        
        TransferRan unper=new TransferRan();
        unper.swap(i, j);
        System.out.println("i="+i+",j="+j);}
    

    public void swap(String i,String j){
        String temp=i;
        i=j;
        j=temp;
    }

}

交换了,但是没完全交换。

你这样写的话,交换的是 swap 函数里面的 ij ,,当调用完以后两个变量的内存就被回收了,并不会改变 main 函数中的 ij

实现方法可以看看这个帖子,这也是Java和C/C++区别很大的一个地方:Java没有指针。

你可以把两个字符串变量设置为静态的,就可以实现交换,就是用static修饰,放到main函数上边,这个变量就属于全局变量,所有的方法都能对其修改。