비교연산자란?
두 피연산자 간의 대소관계 등을 비교하여 true 또는 false 값을 반환한다.
== : 좌우가 같은지 비교, 값이 같다면 true 다르면 false
!= : ≠로 좌우가 다른지 비교, 값이 다르면 true 같으면 false
>, >=, <, <= : 크다, 크거나 같다, 작다, 작거나 같다
✍입력
int a = 10, b = 5;
System.out.println("a > b 인가? " + (a > b));
System.out.println("a < b 인가? " + (a < b));
System.out.println("a >= b 인가? " + (a >= b));
System.out.println("a <= b 인가? " + (a <= b));
System.out.println("a == b 인가? " + (a == b));
System.out.println("a != b 인가? " + (a != b));
💻출력
단, 기본 데이터 타입과 참조형 데이터 타입을 비교할 때는 주의해야 한다.
✍입력
String str1 = "abc";
String str2 = "ab";
String str3 = "c";
String str4 = str2 + "c"; // 변수 + 리터럴
String str5 = str2 + str3; // 변수 + 변수
String str6 = "ab" + "c"; // 리터럴 + 리터럴
System.out.println(str1 == str4);
System.out.println(str1 == str5);
System.out.println(str1 == str6);
💻출력
str1 == str6을 빼고 전부 false가 출력되었다. String은 참조형 데이터 타입이지만, 연산에 리터럴을 사용하면 기본 데이터 타입처럼 사용이 가능하기 때문이다. 참조형은 기본형과 달리 데이터가 변수에 직접적으로 저장되는 것이 아니라 Heap에서 데이터의 주소를 받아와 변수에 저장한다. 즉, 위와 같은 비교연산자에서 데이터의 값이 아니라 메모리의 주소를 비교한다. 그래서 값이 같더라도 false로 출력된다.
문자열을 비교할때는 equals() 메서드를 사용하여 비교해야 한다.
✍입력
System.out.println(str1.equals(str4));
System.out.println(str1.equals(str5));
System.out.println(str1.equals(str6));
💻출력
이제 true가 출력된다
'개발 > Java' 카테고리의 다른 글
[Java] 삼항 연산자 (0) | 2022.12.27 |
---|---|
[Java] 논리 연산자 &&, ||, ! , ^ (0) | 2022.12.27 |
[JAVA] 복합 대입 연산자 (0) | 2022.12.27 |
[Java] 연산자 (0) | 2022.12.26 |
[Java] 형변환(type casting) (0) | 2022.12.26 |