Java String Compare
Java String Compare
Java String 저장 위치
Java에서 String은 다음과 같은 두 가지 방법으로 생성되고, 이 방법에 따라 저장 위치가 다름
"ABC"
와 같은 리터럴을 이용- Heap의 Constant String pool에 저장됨
- 이 방식으로 똑같은 문자열을 가진 두 개의 변수를 생성하면 두 변수의 주소값이 같음
new String("ABC")
와 같은 new 생성자를 사용- Heap에 생성됨 (Constant String pool 외부)
- 매 번 문자열이 생성될 때 마다 새로운 객체가 생성됨
- 문자열의 내용과는 달리 모든 변수들의 주소값이 다름
Java String Compare
Java에서 두 String 변수 s1
, s2
를 비교하는 방법은 다음과 같이 두 가지가 있음
==
연산자s1 == s2
형태로 사용하며, 두 변수의 주소를 비교- 문자열 자체는 같더라도, 주소값이 다르면 false를 반환
- 리터럴로 생성된 문자열과 new 생성자로 생성된 문자열을
==
연산으로 비교하면 다른 이유
equals()
메소드s1.equals(s2)
형태로 사용하며, 두 변수의 문자열 자체 값만 비교- 서로 주소가 다르더라도 상관없음
- 단
s1
이 NULL인 경우NULLPointerException
발생 (s2는 NULL이어도 됨)