Java

동등성과 동일성

변위니 2025. 1. 6. 10:31

동일성

  • 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