[Java의 정석]Chapter3.연산자(13~15)

Hello_Wendy·2022년 4월 5일
0

자바의 정석

목록 보기
14/61
post-thumbnail

Chapter 3. 연산자

13. 비교 연산자

  • 비교 연산자 : 두 피연산자를 비교. 주로 조건문과 반복문의 조건식에 사용되며, 연산결과는 오직 truefalse 둘 중 하나
  • 비교 연산자 역시 이항 연산자이므로 비교하는 피연산자의 타입이 서로 다를 경우 자료형의 범위가 큰 쪽으로 자동으로 형변환 하여 비교

📍 대소비교 연산자 < > <= >=

  • 두 피연산자의 값의 크기를 비교
  • 참이면 true, 거짓이면 false로 결과 반환
  • 기본형(boolean, char, byte, short, int, long, float, double)중에서는 boolean을 제외한 나머지 자료형에서 다 사용할 수 있지만 참조형(기본형 제외한 나머지 타입)에서는 사용할 수 없음
비교연산자연산결과
>좌변 값이 크면 true, 아니면 false
<좌변 값이 작으면 true, 아니면 false
>=좌변 값이 크거나 같으면 true, 아니면 false
<=좌변 값이 작거나 같으면 true, 아니면 false

📍 등가비교 연산자 == !=

  • 두 피연산자의 값이 같은지 또는 다른지 비교
  • 모든 자료형(기본형,참조형)에 사용 가능
  • 기본형의 경우 변수에 저장되어 있는 값이 같은지를 알 수 있고, 참조형의 경우 객체의 주소값을 저장하기 때문에 두 개의 피연산자(참조변수)가 같은 객체를 가리키고 있는지(주소값이 같은지)를 알 수 있음
  • 기본형과 참조형을 서로 형변환기 불가능하여 등가비교 연산자로 기본형과 참조형 비교 불가
비교연산자연산결과
==두 값이 같으면 true, 아니면 false
!=두 값이 다르면 true, 아니면 false

14. 문자열의 비교

  • 두 문자열을 비교할 떄는, 비교연산자==대신 equals()라는 메서드 사용
  • 비교연산자는 두 문자열이 완전히 같은 것인지 비교할 뿐, 문자열의 내용이 같은지 비교하기 위해서 equals() 사용

    str2와 "abc"의 내용이 같은데도 '=='로 비교하면, 결과는 false
    →내용은 같지만 서로 다른 객체이기 때문
    그러나 equals()는 객체가 달라도 내용이 같으면 true 반환
    ▶ 만일 대소문자를 구별하지 않고 비교하고 싶으면, equals()대신 equalsIgnoreCase()사용

15. 논리 연산자 && ||

  • 둘 이상의 조건을 '&& 그리고(AND)'. '|| 또는(OR)' 으로 연결하여 하나의 식으로 표현
  • && (그리고(AND)) : 두 피연산자가 모두 true일 때만 true
  • || (또는(OR)) : 두 피연산자 중 어느 한 쪽만 true여도 true
  • 피연산자로 boolean형 또는 boolean형 값을 결과로 하는 조건식만을 허용
xyx││yx&&y
truetruetruetrue
truefalsetruefalse
falsetruetruefalse
falsefalsefalsefalse

🍕 사용예시 및 주의사항

①x는 10보다 크고, 20보다 작다
x > 10 && x < 20
10 < x && x < 20

②i는 2의 배수 또는 3의 배수이다
→2의 배수 : 2로 나누었을 때 나머지가 0
i % 2 == 0 || i % 3 == 0

③i는 2의 배수 또는 3의 배수지만 6의 배수는 아니다
(i % 2 == 0 || i % 3 == 0) && i % 6 != 0
→'&&'가 '||'보다 우선순위가 높기 때문에 괄호를 사용하지 않으면 '&&'를 먼저 연산함
→i % 2 == 0 || i % 3==0 && i % 6 != 0 과
→i % 2 == 0 || (i % 3==0 && i % 6 != 0) 는 같음
괄호 사용하여 우선순위를 명확히 해주는 것이 좋음

④문자 ch는 숫자('0'~'9')이다
사용자로부터 입력된 문자가 숫자('0'~'9')인지 확인하는 식은
→ '0' <= ch && ch <= '9'
유니코드에서 문자 '0'부터 '9'까지 연속적으로 배치되어 있기 때문에 가능한 식. 문자 '0'부터 '9'까지 유니코드는 10진수로 아래와 같음

문자'0''1''2''3''4''5''6''7''8''9'
문자코드48495051525354555657

▶ch의 값이 '5'인 경우 다음과 같은 과정으로 연산됨
'0' <= ch && ch <= '9'
→'0' <= 5 && '5' <= '9'
→48 <= 53 && 53 <= 57
→true && true
→true

⑤문자 ch는 대문자 또는 소문자이다
④의 경우와 마찬가지로 문자'a'부터 'z'까지, 그리고 'A'부터 'Z'까지도 연속적으로 배치되어 있으므로 문자 ch가 대문자 또는 소문자인지 확인하는 식은 아래와 같음
▶('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z')

profile
안녕 나의 새로운 세상

0개의 댓글