当我尝试 self 回答这个问题时,我只能找到有关从数组中删除项目的其他问题,以便删除对象之后的项目在索引中向下移动 1。
在下面的代码中,我有两个数组保存 SomeObject 类(带有 name 属性):SomeObject_ONE 和 SomeObject_TWO。
下面我将一个对象“some-object”放入第一个数组中,然后将第二个数组设置为等于第一个数组中的对象。我仍然可以通过更改第二个数组中对象的属性(第三个缩进)来更改第一个数组中对象的属性。
但是,当我尝试将第二个数组中的对象设置为 null 时,它不会将第一个数组设置为 null,而是仅删除第二个数组中对象的索引(第四个缩进)。
有没有办法删除数组中的对象而不是删除其数组索引?
谢谢。
SomeObject[] ObjectArray_ONE = new SomeObject[10];
SomeObject[] ObjectArray_TWO = new SomeObject[10];
ObjectArray_ONE[0] = new SomeObject();
ObjectArray_TWO[0] = ObjectArray_ONE[0];
System.out.println(ObjectArray_ONE[0].name+" outputs default name");
ObjectArray_TWO[0].name = "Name changed from OA2";
System.out.println(ObjectArray_ONE[0].name+" outputs Name changed from OA2");
System.out.println("Should not be null : "+ObjectArray_ONE[0]);
ObjectArray_TWO[0] = null;
System.out.println("Should be null : "+ObjectArray_ONE[0]);
ObjectArray_ONE[0] = null;
System.out.println("Only now is it really null: "+ObjectArray_ONE[0]);
最佳答案
这是按引用传递
与按值传递
。
Java 是按值传递的,在这种情况下,值是一个引用。这是一个微妙的区别。这里的意思是,如果你改变一处引用的对象,那么它到处都会改变。但它不会改变引用。如果我将引用设置为等于其他值,则原始对象不会改变。
关于java - 是否可以删除数组中的对象而不是其索引? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44936566/