==연산자
: 비교하는 두 대상의 주소값을 비교
equals
: (대소문자 구분) String 클래스의 equals() 메서드는 비교하는 두 대상의 값을 비교
equalsIgnoreCase
: (대소문자 구분X) String 클래스의 equals() 메서드는 비교하는 두 대상의 값을 비교
==연산자 | equals | |
---|---|---|
비교방식 | 주소값 : 주소값 | 값 : 값 |
1️⃣ int, char...(기본자료형_PDT) : Call by Value 형태
기본적으로 대상에 주소값을 가지지 않는 형태로 사용된다.
2️⃣ String( : Call by Reference 형태
클래스는 기본적으로 객체 생성 시 주소값이 부여된다.
그렇기에 String 타입을 선언했을 때는 같은 값을 부여하더라도 서로의 주소값이 다르다. (String은 기본타입이 아닌 클래스이기 때문)
💡 따라서 문자열 데이터의 값을 비교하기 위해선 "==연산자" 가 아닌 "equals"를 사용해야 한다.
public static void main(String[] args) {
int a = 1;
int b = 3;
int c = 2;
int d = 2;
System.out.println(a==b ? true : false); // false
System.out.println(c==d ? true : false); // true
String s1 = "Hello";
String s2 = "Hi";
String s3 = "Yes";
String s4 = "Yes";
System.out.println(s1.equals(s2)); // false
System.out.println(s3.equals(s4)); // true
}