티스토리 뷰

■ 기본형( Primitive Type) ( ex. int, double, boolean, char, long, short, byte, float )

== : 값 비교

 equals() : 기본형은 객체가 아니기 때문에 equals() 메서드를 쓸 수 없음!! ❌❌

int a = 5;
int b = 5;
// a == b → true ( 값 비교이기에 true!! ) 
// a.equals(b); ← 컴파일 에러! 😱 기본형에는 메서드가 없어!

 

--------------------------------------------------------------------

 

■ 참조형 (Reference Type) ( ex. String, Integer, Object, List, ArrayList, 직접 만든 클래스 등 )

== : 주소값(참조값)를 비교 ( 두 객체가 동일한 객체인지(같은 메모리 위치를 가리키는지) 확인).

String a = new String("hello");
String b = new String("hello");

System.out.println(a == b); // ❌ false (다른 객체!)
// 메모리 위치 다름!!

 

.equals() : Object (기본)으로는 주소비교이지만, 자주 쓰는 클래스에서는 값 비교하도록 내부적으로 오버라이딩 되어있다.  

 

간단하게 정리하면 다음과 같다.

String ✅ 오버라이딩 되어 있음 문자열 내용 ("hello" == "hello")
Integer ✅ 오버라이딩 되어 있음 숫자 값 (Integer.value)
List (ArrayList 등) ✅ 오버라이딩 되어 있음 리스트 안의 요소들 (List.equals())
Object (기본) ❌ 오버라이딩 안 되어 있음 주소 비교 (this == o)
직접 만든 클래스 (Product 등) ❌ 내가 직접 해야 함 기본은 주소 비교 (this == o)
String a = new String("hello");
String b = new String("hello");

System.out.println(a.equals(b)); // ✅ true (문자열 내용이 같으니까)

 

 

마무리)

요즘 뭔가 머리 스타일 꾸미는 것에 관심이 생겼다.. 혼자서 가르마도 도전하고 그런다.. 19살이라고 늙은 줄 알았는데, 나도 애기인것같다 ㅋㅋㅋ 😬😬

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함