내가 배열 2에서 배열 1과 인스턴스 2에서 INSTANCE1 얻을 경우, 그들은 서로 다른 포인터 위치 또는 동일한을 반환? 그들은 같은 객체를 참조하는 경우
예, ==
는 true를 돌려줍니다.
ArrayList는 사용자가 지정한 항목을 정확하게 저장합니다. 참조 ("주소")를 주면 해당 주소가 저장됩니다. 해당 특정 요소를 가져 오면 동일한 참조를 다시 가져옵니다.
샘플 조각 : ArrayList에 이 그러나 복사본을 만들 않는 의미에서
Object o = new Object();
List<Object> l1 = new ArrayList<Object>();
List<Object> l2 = new ArrayList<Object>();
l1.add(o);
l2.add(o);
Object o1 = l1.get(0);
Object o2 = l2.get(0);
System.out.println(o1 == o2); // prints true
이 조각이 있듯이, 목록은 영향을받지 않습니다 s
을 변경 (기준의!) :
String s = "hello";
List<String> l = new ArrayList<String>();
l.add(s);
s = "world";
System.out.println(l.get(0)); // prints hello
기본적으로 ==
은 변수의 내용을 비교합니다. 참조 내용이 "주소"이므로 ==
을 사용하는 참조를 비교하면 두 참조가 동일한 객체를 참조하는 경우에만 참이됩니다.
o1.equals(o2)
은 o1
과 o2
이 참조하는 실제 개체를 비교합니다.
는 키 또는 실제 개체로 포인터 위치를 저장합니까? 동일한 내용의 객체가 두 개 있지만 실제로 다른 객체 인 경우 여전히 작동합니까?
실제 개체를 키로 사용합니다. 두 개의 개별 오브젝트가 equal
인 경우, 두 오브젝트 중 하나를 사용하여 해당 키에 저장된 값을 검색 할 수 있습니다.
나는 아니, ==
포인터 내용에 보이는, 또는, == 연산자는이 하찮은 일에 속 태우고있는 포인터 위치
에 보이는 확신 해요,하지만 개체 위치.
질문의 마지막 부분이 매우 명확하지 않습니다. 문제를 명확히하기 위해 질문을 편집하십시오. –
예, 편집되었습니다. 희망이 도움이됩니다. – Pwnna