这是我的民主类,我试图实现切换机制并试图弄清楚在执行方法时如何传递对象引用: 这是我的主要演示类:
package referenceOrValue;
import java.util.ArrayList;
public class DemoFoo {
public static void main(String[] args) {
ArrayList<String> demoArray = new ArrayList<>();
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("a");
arrayList.add("b");
arrayList.add("c");
demoArray.add("d");
demoArray.add("e");
demoArray.add("f");
System.out.println("The arraylist is " + arrayList);
System.out.println("The demo array is " + demoArray);
Foo foo = new Foo();
//foo.setNull(arrayList);
foo.switching(arrayList, demoArray);
System.out.println("The arraylist after switch " + arrayList);
System.out.println("The demo array after switch " + demoArray);
}
}
现在有一个像这样的foo类,其唯一的功能是交换arraylist中的值:
package referenceOrValue;
import java.util.ArrayList;
public class Foo {
public void switching (ArrayList<String> a, ArrayList<String> b){
ArrayList<String> temp=null;
temp=a;
a=b;
b=temp;
System.out.println("The arraylist inside switch " + a);
System.out.println("The demo array inside switch " + b);
}
}
现在主要问题是输出: - (
The arraylist is [a, b, c]
The demo array is [d, e, f]
The arraylist inside switch [d, e, f]
The demo array inside switch [a, b, c]
The arraylist after switch [a, b, c]
The demo array after switch [d, e, f]
根据我的知识,这个切换应该已经正确执行了但结果对我来说有点令人惊讶,因为在切换方法中我没有创建新对象:
a= new ArrayList<>();
所以“a”仍然指的是[a,b,c]并且在切换操作期间,值在输出中显示的方法中改变,但是主类没有改变对象。 请帮忙!!
答案 0 :(得分:0)
直接将数组列表传入方法...
但在打印出内容之前,请切换参考!所以在你打印内容的时候......
由于Java始终按值传递,因此主方法中的变量(仅包含引用)不受影响。所以他们打印出与以前相同的内容。