-
String compareJava/Basics 2019. 4. 9. 09:11
■String
- String은 기본형 타입(int,double 등)이 아니라 참조형 타입(class)
- String str = new String("Limky");
- JVM heap 영역에 할당
- 그러나 특이하게 기본형 타입처럼 값을 직접 할당 해서도 사용 가능
- String str = "Limky";
- JVM class 영역의 상수풀에 할당
■String의 내용비교 vs 주소비교
- String str01 = "Limky";
String str02 = "Limky";
두 변수 모두 '하나'의 String 클래스를 '가리키고' 있다.
내용도 같고 주소도 같다.
- String str01 = new String("Limky");
String str02 = "Limky";
두 변수는 각각 heap과 class영역의 상수풀을 '가리키고' 있다. (다른 주소값)
내용은 같지만 주소는 다르다.
■String의 내용 비교와 주소 비교를 구분해야 하는 이유?
- 문자열이 같은지를 확인하고 싶을 때, 무심코 == 혹은 eqaul 중 아무거나 쓰면
의도와 다른 결과가 나올 수 있다.
- 따라서 내용을 비교하고 싶은지, 주소를 비교하고 싶은지를 먼저 판단한 후
알맞는 방법을 사용해야 한다.
■String의 내용 비교와 주소 비교 방법
- 내용으로 판단 : str01.eqaul(str02)
주소로 판단 : str01==str02
- 비교 경우의 수
- 주소가 같으면 내용도 같다.
- 주소가 다르면 내용은 같을 수도, 다를수도 있다.
- 내용이 같으면 주소는 같을 수도, 다를수도 있다.
- 내용이 다르면 주소도 다르다.
'Java > Basics' 카테고리의 다른 글
자바 빌드 툴 (0) 2019.05.21 자바 메모리 구조(Runtime Data Area) (2) 2019.05.16 Object class (0) 2019.04.06 jar,war,ear (0) 2019.04.06 String, StringBuilder, StringBuffer의 차이 (0) 2019.04.06 댓글