728x90
1. equals 는 객체가 가진 내용이 같은지 다른지를 비교하는 메소드이다
2. "==" 는 객체의 메모리 주소를 비교한다
ex ) String a = "a";
String b = "a";
if (a.equals(b))
system.out.println("같다")
=> 같다
if (a == b)
system.out.println("같다")
=> 같다
* "==" 은 메모리의 주소를 비교한다고 했는데 왜 같다 라는 결론이 나왔을까
Java 에서 Jvm에 메모리 할당시 String a = "a"; 와 같은 방식으로 할당할 경우
상수풀이란 곳에 "a" 값이 저장되게 되고 a가 그 주소를 가리키게된다
이때 String b = "a"; 를 실행 할 경우 상수풀에 이미 "a"란 값이 있으므로
b에 새로운 주소가 지정되는 것이 아니라 상수풀에 있는 "a" 란값의 주소를 가리키게된다
따라서 a와 b는 같은 주소를 가리키게되고 a == b 가 같다는 결론이 난다.
'Language > Java' 카테고리의 다른 글
Java - 쓰레드 동기화 (Synchronized) (0) | 2018.08.26 |
---|---|
Java - 멀티쓰레드 (Multi Thread) (0) | 2018.08.26 |
Java - InputStream 의 read()메소드는 왜 int형을 반환 하는가 (0) | 2018.08.25 |
Java - String 과 StringBuffer 클래스 (0) | 2018.08.25 |
Java - Wrapper / 오토박싱 (0) | 2018.08.25 |