== 연산자
- 항등 연산자(Operator)입니다.
- 참조 비교(Reference Compariso)
- 두 객체가 같은 메모리 공간을 가리키는지 확인합니다.
- 반환 형태 : boolean
- 같은 주소면 true, 그렇지 않으면 false
- 모든 기본 타입(Primitive Type)에도 적용할 수 있습니다.
- 참조 타입(Reference Type)에도 적용할 수 있습니다.
- 이때, 사용하는 객체 인자의 유형간에 호환성이 있어야 합니다.
ex) 부모 - 자식 관계, 동일한 클래스
- 그렇지 않으면 컴파일 오류가 발생합니다.
즉, == 연산자는 주소의 값을 비교한다. 주소의 값이란 실제 내용의 값이 아닌 자료의 위치의 값
equals 메소드
- 객체 비교 메소드입니다.
- 내용 비교(Content Comparison)
- 두 객체의 값이 같은지 확인합니다.
- 즉, 문자열의 데이터/내용을 기반으로 비교합니다.
- 기본 타입에 대해서는 적용할 수 없습니다.
- 반환 형태 : boolean
- 같은 내용이면 true, 그렇지 않으면 false
예시로 이해해보기
String answer1 = "2413";
String answer2 = answer1;
String answer3 = new String("2413");
System.out.println(answer1 == answer2); // true
// answer2에 answer1 값을 넣었으므로 주소를 같이 공유한다.
System.out.println(answer1 == answer3); //false
// answer1과 answer3는 각각 생성되었으므로 주소가 다르다.
System.out.println(answer1.equals(answer2)); // true
System.out.println(answer1.equals(answer3)); // true
// 내용을 비교하기 때문에 1234 내용이 같으므로 true가 반환된다.
오늘 만든 '자바 감옥 탈출 퀴즈 게임' 프로그램 중 일부

입력받은 answer2와 "1234"를 비교해야 하는 상황이었으므로 ==연산자가 아니라 equals 메소드를 사용해야 한다.