동등성과 동일성
동일성
- 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.