티스토리 뷰
■ 기본형( 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살이라고 늙은 줄 알았는데, 나도 애기인것같다 ㅋㅋㅋ 😬😬
'Java' 카테고리의 다른 글
| 자바 - 형변환 예제 ( 참조형 ) (1) | 2025.08.10 |
|---|---|
| 자바 - 제네릭, 제네릭 타입 (2) | 2025.08.08 |
| 자바 - 참조변수, 인스턴스, 객체 ( 메모리 저장 방식 부터 확실히 알고가자!! ) (8) | 2025.07.31 |
| 자바 - 자바의 다형성 → 인터페이스 (interface) (3) | 2025.07.31 |
| 멀티스레드 환경에서의 안전한 작업을 도와주는 CopyOnWriteArrayList랑 AtomicLong 에 대해. (6) | 2025.07.31 |