JAVA/JAVA기본
JAVA - equals와 ==의 차이
realizers
2021. 12. 14. 22:01
728x90
반응형
equals와 ==의 차이
- equals는 데이터 자체의 값을 비교하는 메서드입니다.
- ==는 데이터의 주소값을 비교해주는 비교 연산자입니다.
- Primitive 타입은 주소값이 같은지 비교를 하기때문에 ==을 사용합니다.
- Primitive 타입의 객체는 Constant Pool의 특정한 값을 참조하는 변수이기에 결국 Constant Pool내의 동일한 주소를 비교합니다.
public static void main(String[] args) {
String A = "Java"; // 주소값 : 1000
String B = "Java"; // 주소값 : 1000
String C = new String("Java"); // new 연산자 주소값 : 2000
String D = new String("Java"); // new 연산자 주소값 : 3000
// ==
System.out.println(A == B); // true
System.out.println(A == C); // false
System.out.println(C == D); // false
// equals
System.out.println(A.equals(B)); // true
System.out.println(A.equals(C)); // true
System.out.println(C.equals(D)); // true
}
- A변수와 B변수는 리터럴을 사용하여 String을 생성하면 String Constant Pool 영역에 존재하고 new 키워드를 사용하여 String을 생성하면 Heap영역에 생성됩니다.
- A와 B는 String Constant Pool 영역에 만들어진 하나의 객체를 참조하고 C와 D는 Heap영역에 생성된 각각의 객체를 참조하게 됩니다. 그래서 3개의 String 객체가 생성되게 됩니다.
728x90
반응형