equals
-
Java - '==' 연산자 와 'equals()'를 이용한 문자열 비교Language/Java 2022. 9. 20. 15:25
문자열 비교 String 변수 생성 방식 String 변수를 생성할 때는 다음과 같은 두 가지 방법이 있다. 1. 리터럴을 이용한 방식 2. new 연산자를 이용한 방식 위 두 가지 방식에는 큰 차이점이 존재한다. 리터럴 방식을 사용해서 String을 생성하면 String Constant Pool이라는 영역에 존재하게 되고, new 방식을 사용하게 되면 Heap 영역에 존재하게 된다. String을 리터럴로 선언할 경우 내부적으로 String의 intern() 메서드가 호출되고 intern() 메서드는 주어진 문자열이 String Constant Pool에 존재하는지 검색한다. 만약, 주어진 문자열이 존재하는 경우 해당 문자열의 주소 값을 반환하고, 없는 경우에는 String Constant Pool에 ..
-
Java - hashCode() & equals()Language/Java 2022. 4. 5. 15:34
hashCode() hashCode()란? hashCode()는 두 객체가 같은 객체인지 확인한다. hashCode() 메서드는 '=='과 같은 동일 비교 기능을 하며, 반환 값으로 런타임 중 객체의 유일한 정수 값을 반환한다. 일반적으로 Heap에 저장된 객체의 메모리 주소를 반환한다. 해시란? 해시는 임의의 크기를 가진 데이터(key)를 고정된 크기의 데이터(value)로 변화시켜 저장하는 것이다. key에 대한 해시값을 구하는 과정을 해싱이라고 하며, 이때 사용하는 함수를 해시함수라고 한다. equals() equals()란? equals()는 두 개의 객체가 동일한지 검사하기 위해 사용되는 메서드이다. equals()가 객체를 비교하는 방법은 두 개의 객체가 참조하는 것이 동일한지를 확인하는 것이..
-
Java - 동일성(identity) & 동등성(equality)Language/Java 2022. 3. 3. 16:47
동일성(identity) & 동등성(equality) 동일성이란? 동일성은 동일하다는 뜻으로 두 개의 객체가 완전히 같은 경우를 의미한다. 여기서 완전히 같다는 뜻은 두 객체가 사실상 하나의 객체로 봐도 무방하며, 주소 값이 같기 때문에 두 변수가 같은 객체를 가리키게 된다. 위 사진에서 refVar1은 객체1을 가리키고 있고, refVar2와 refVar3는 객체2를 가리키고 있다. refVar2와 refVar3는 동일한 객체를 가리키고 있으므로, 두 변수는 동일하다고 이야기할 수 있다. 그리고 해당 변수가 동일한지 "==" 연산자를 통해 판별할 수 있다. 추가적으로, Primitive Type은 객체가 아니라 주소가 없으므로 "==" 연산자를 사용하였을 때 내용이 같으면 동일하다고 말한다. 동등성이란..