为什么当我向我的ArrayList添加一个对象时,应该将它传递给对象的引用,然后使对象等于空,它输出完全正常。为什么我没有得到NullPointerException
ArrayList<Test> testList = new ArrayList<>();
Test test = new Test();
System.out.println(test);
testList.add(test);
for(Test t : testList)
{
System.out.println(t);
}
test = null;
for(Test t : testList)
{
System.out.println(t);
}
测试构造去为:
int x = 0;
Test()
{
x = 50;
}
public String toString()
{
return x + "";
}
然而,输出为50,50,50 而不是50,50,空
Java是通过价值 – Pshemo
请详细说明一下吗? @Pshemo – Otanan
当你做'testList.add(test);'你正在传递'test'的值(当前存储的实例,而不是'test'引用)。如果稍后将'test'的值(在您的情况下更改为'null'),它不会影响先前传递的值。更多信息[is-java-pass-by-reference](http://stackoverflow.com/questions/40480/is-java-pass-by-reference) – Pshemo