我知道 Java 通过引用传递对象,因此当对象作为参数传递到方法中时,方法内参数本地完成的任何操作都会对实际对象完成。
void main(){
String[] array1 = {"a","b","c"};
someMethod(array1);
print(array1.length);
}
void someMethod(String[] array){
/..code here../
array = null;
}
当尝试打印 array1.length 时,我希望得到一个空指针异常,因为我的方法将其设置为 null。然而这并没有发生。这有什么原因吗?
最佳答案
对象通过引用值传递(按值传递)而不仅仅是引用。
当您在 someMethod()
中将 null
设置为数组时,从技术上讲,它会将范围 someMethod
的数组设置为 null
不是 main
中的那个。
如果您还想将外部引用null
,那么只需返回null
,而不是分配null
。
我建议阅读此thread正确理解这个概念。
关于java - 如何删除传递给 Java 方法的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12591294/