Post

동등성과 동일성

동일성

  • Identity
  • 메모리 주소가 같음
  • 주소 값이 같기 때문에 두 변수가 같은 객체를 가리킨다.
  • ==




동등성

  • Equality
  • 값이 같음
  • 두 개의 객체가 같은 정보를 갖는다
  • 객체의 주소가 다르더라도 내용이 같으면 동등~~
  • equals


기본 타입의 변수는 값을 직접 저장하기 때문에 같은 값을 가지는 여러 변수가 있어도 각각 독립적으로 메모리에 존재한다.

기본 타입은 == 연산자를 이용해 값의 동일 여부를 비교하며, 두 변수가 같은 값을 가지면 true를 반환한다.

참조 타입은 == 연산자로 메모리 주소를 비교하고, equals를 이용하여 값을 비교한다.


  • 참조 타입 변수 중 new 키워드를 사용하여 생성된 객체는 서로 다른 변수를 나타낸다..
1
2
3
4
5
String c = new String("hello");
String d = new String("hello");

System.out.println(c == d); // false
System.out.println(c.equals(d)); // true

하지만 리터럴로 선언하는 경우 동일한 객체를 가리킨다.

1
2
3
4
5
String a = "hello";
String b = "hello";

System.out.println(a == b); // true
System.out.println(a.equals(b)); // true
This post is licensed under CC BY 4.0 by the author.