동일성
- Identity
- 메모리 주소가 같다.
- 주소 값이 같기 때문에 두 변수가 같은 객체를 가리킨다.
- ==
동등성
- Equality
- 두 객체가 같은 값을 갖는다.
- 객체의 데이터(필드 값)가 동일하다면 두 객체는 동등하다.
- equals() 메서드
기본 타입의 변수는 값을 직접 저장한다.
예를 들어, int, double, char 등의 변수는 메모리에 값 자체를 저장하기 때문에,
같은 값을 가지는 여러 변수가 존재해도 각각 독립적으로 메모리에 저장된다.
== 연산자를 이용해 값을 비교하며, 두 변수가 같은 값을 가지면 true, 다른 값을 갖는 경우 false를 반환한다.
참조 타입의 변수는 객체의 메모리 주소를 저장한다.
값 자체가 아닌 객체가 저장된 메모리 주소를 가리키기 때문에, 같은 값을 갖는 두 객체라도 메모리 주소가 다를 수 있다.
== 연산자로 메모리 주소를 비교하고, equals() 메서드를 이용하여 값을 비교한다.
new 키워드를 사용하여 생성된 객체는 서로 다른 변수를 나타낸다.
String c = new String("hello");
String d = new String("hello");
System.out.println(c == d); // false
System.out.println(c.equals(d)); // true
리터럴로 선언하는 경우 동일한 객체를 가리킨다.
String a = "hello";
String b = "hello";
System.out.println(a == b); // true
System.out.println(a.equals(b)); // true
'Java' 카테고리의 다른 글
Process와 Thread (2) | 2025.01.07 |
---|---|
String 객체 선언하기 (0) | 2025.01.06 |
Primitive 타입과 Reference 타입 (0) | 2025.01.06 |
Enum (0) | 2025.01.06 |
오버로딩과 오버라이딩 (0) | 2025.01.06 |