ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • String compare
    Java/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

    댓글

Designed by Tistory.