티스토리 뷰

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
반응형

'JAVA > JAVA기본' 카테고리의 다른 글

JAVA - LinkedList란? 그리고 구현  (0) 2021.12.30
JAVA - 조건문과 선택문 그리고 반복문  (0) 2021.12.28
JAVA - hashCode의 의미  (1) 2021.12.14
JAVA - (optional) Java 13, switch 연산자  (0) 2021.12.14
JAVA - 연산자란?  (0) 2021.12.13