실제 개체를 다루지 않고 메모리의 개체에 대한 포인터 또는 참조를 처리한다는 것을 알 수 있습니다. 따라서 :
Object obj = new Object();
은 메모리에있는 객체에 대한 링크가 아닙니다. 링크를 null로 설정하거나 링크를 다른 오브젝트로 대체하여 링크를 제거하면 이전 오브젝트가 삭제됩니다 ... ish. 가비지 수집이 실행되면 삭제됩니다. 그래서 :
obj = null;
및
obj = new Object();
은 본질적으로 기존의 객체를 삭제합니다. 동일한 객체 배열에도 적용되지만 실제 객체의 배열이 아니라 객체에 대한 링크 배열을 처리합니다. 따라서 배열의 위치를 null로 설정하거나 위치를 새 객체로 설정하면 이전 객체가 삭제됩니다. 그래서 :
ObjArray[4] = null;
및
ObjArray[4] = new Object;
이전 개체를 삭제합니다.
편집 : 내가 기억하는 것을 잊어 버린 것 같아요. 메모리의 단일 개체에 여러 개의 링크가있을 수 있으며 모든 링크가 제거 될 때까지 개체가 가비지 수집에서 삭제 될 위치에 있어야합니다. 에 대한 링크가 여전히 ObjArray에 존재하기 때문에 위의 경우
Object obj = new Object();
ObjArray[4] = obj;
obj=null;
, OBJ가 null로 설정하면 원래 삭제되지 않습니다 생성 된 객체는이입니다. 객체가 사라지기 전에 obj와 ObjArray [4]를 모두 null로 설정해야합니다.
로직과 디스플레이를 분리해야합니다. 그렇다면 이것은 문제가되지 않습니다.(현대적인 시스템에서, 어쨌든 칙칙하고 복잡한 개념이라 할지라도 문제가되지는 않을 것입니다.) –