IT/Java

[Java] String과 char의 ==와 equals 비교 차이

올빼밋. 2023. 10. 24. 15:23
728x90
  String char
== "객체"이므로 참조 비교  "원시 데이터 유형"이므로 값 비교
equals "객체"이므로 내용 비교 없음

String

'==' 연산자로 비교하면 문자열 객체의 참조(메모리 주소)를 비교한다.

이는 두 문자열이 동일한 객체를 참조하는지를 확인하는 용도이다.

그래서 문자열의 내용을 비교하기 위해서는 equals 메서드를 사용한다.

객체는 힙 메모리에 저장
힙 메모리는 동적으로 할당되는 메모리 영역으로, 객체 인스턴스와 배열 등의 데이터 구조가 저장되는 곳
힙 메모리는 생명주기 동안 유지되며, 메모리 관리와 가비지 컬렉션을 통해 사용되지 않는 객체를 정리

 

char

반면에 char는 equals 메서드가 없다.

왜냐하면 char 데이터 유형은 원시 데이터 유형(primitive data type)으로 객체가 아니기 때문에 '==' 연산자로 비교할때 주소 비교가 아닌 값 비교가 수행이 되는 것이다.

char 변수가 값은 메모리 주소를 갖지 않는다.

원시 데이터 유형은 스택 메모리에 저장
스택 메모리는 해당 변수의 실제 값을 직접 보관하는 메모리 영역
간단하게 빠르게 엑세스 할 수 있는 적합한 위치

 

출처 : CharGPT로 질문을 통한 답변

728x90