Java에서 int와 boolean과 같은 일반적인 데이터 타입의 비교는 == 연산자를 사용해 비교한다.
하지만 String은 객체이기 떄문에 값을 비교할 때 ==이 아닌 equals()라는 메소드를 사용하여 비교한다.
String 변수 생성 방법
1. 리터럴 이용
2. new 연산자 이용
String str1 = "apple"; //리터럴을 이용한 방식
String str2 = "apple"; //리터럴을 이용한 방식
String str3 = new String("example"); //new 연산자를 이용한 방식
String str4 = new String("example"); //new 연산자를 이용한 방식
리터럴을 사용하는 경우,
string constant pool 영역에 존재하게 되고, new 연산자를 통해 String을 생성하면 Heap 영역에 존재하게 된다.
String을 리터럴로 선언할 경우, 내부적으로 String의 intern() 메소드가 호출되고 intern() 메소드는 주어진 문자열이 string constant pool에 존재하는 지 검색하고 존재한다면 그 주소값을 반환하고, 존재하지 않는다면 string constant pool에 넣고 샐운 주소값을 반환한다.
== 연산자와 equals() 메소드의 가장 큰 차이점은
== 연산자는 비교하는 대상의 주소값을 비교하지만, String 클래스의 equals 메소드는 비교하는 대상의 값을 비교한다는 것!
'Algorithm' 카테고리의 다른 글
| [알고리즘] HashSet (0) | 2022.06.26 |
|---|---|
| [알고리즘] 유클리드 호제법 (0) | 2022.06.22 |
| 자바 matches 함수 (0) | 2022.06.20 |
| Java의 문자열 메소드 (0) | 2022.05.28 |
| [정올] 153 : 배열1 - 형성평가4 (0) | 2022.01.07 |