기본적으로 equals 와 (==) 이 둘은 양 쪽에 있는 내용을 비교한 값을 boolean type으로 반환한다는 공통점이 있다.
하지만 이 둘의 차이점이 있다.
1 형태의 차이
단순한 차이는 형태의 차이이다.
equals는 메소드이다. 객체끼리 내용을 비교가 가능하다. -- 메소드
== 은 비교를 위한 연산자 이다. -- 연산자
2.주소값 비교와 내용 비교
equals메소드는 비교하고자 하는 대상의 내용 자체를 비교하지만,
== 연산자는 비교하고자 하는 대상의 주소값을 비교한다.
주소값이라는 것을 확실하게 집수소, 이메일주소 처럼 확정적으로 정해져서 보여지는 것은 아니지만 대상을 구별할 수 있게 하는 값이라고 알아두면된다.
아래 그림을 보면 쉽게 이해 할 수 있다.
a 와 b는 같은 주소값을 가지지만, c같은경우는 다른 주소 값을 가진다.
내용은 같지만 c가 다른 주소값을 할당을 받은 이유는 aaa 라는 문자열을 new String를 통해새롭게 선언을 했기 때문이다.
System.out.println("a.equals(b)); -- true
System.out.println( a == b); -- true
System.out.println( a == c); -- false
System.out.println( a.equals(c)); -- true
'개발일지 > 자바' 카테고리의 다른 글
this, Getter, Setter (0) | 2022.09.04 |
---|---|
싱글톤 (0) | 2022.09.01 |
생성자, 생성자의 오버로딩, 접근지정자 (0) | 2022.08.31 |
CRUD란 (0) | 2022.08.31 |
스택, 힙(메모리위치에 따른 변수구분) (0) | 2022.08.30 |
댓글