[Java의 정석]Chapter3.연산자(16~19)
Chapter 3. 연산자
16. 논리 부정 연산자 !
- 피연산자가 true이면 false를, false면 true를 결과로 반환
즉, true와 false를 반대로 바꾸는 것 - 논리 부정 연산자
!
는 조건문과 반복문에서 주로 사용
ex) '문자 ch는 소문자가 아니다'
▶ ch < 'a' || ch > 'z' 보다
▶ !('a' <= ch && ch <= 'z') 가 더 알기 쉽다
ex
식 '!!b' 의 평가과정
▶!!b → !!true → !false → true
17. 조건 연산자
조건 연산자
: 조건식, 식1, 식2 모두 세 개의 피연산자를 필요로 하는 삼항 연산자이며, 삼항 연산자는 조건 연산자 하나뿐임- 첫 번째 피연산자인 조건식의 평가결과에 따라 다른 결과를 반환. 조건식의 평가결과가 true이면 식1이, false이면 식2가 연산결과가 됨
🍕 예
result = (x > y) ? x : y;
(괄호 생략가능)
위의 문장에서 식 'x>y'의 결과가 True이면, 변수 result에는 x 의 값이 저장, false이면 y의 값이 저장.
result = (x > y) ? x : y;
→ result = (5 > 3) ? 5 : 3;
→ result = (true) ? 5 : 3;
→ result = 5;
-
조건 연산자는 조건문인
if문
으로 바꿔 쓸 수 있음(코드가 간단)
▶조건 연산자 사용
result = (x > y) ? x : y;
▶if문 사용
if(x > y)
result = x; //x>y가 true일 때
else
result = y; //x>y가 false일 때 -
조건 연산자의 식1과 식2의 타입이 다른 경우, 이항 연산자처럼 산술 변환이 발생
▶x = x+(mod < 0.5 ? 0 : 0.5) //0과 0.5의 타입이 다름
▶x = x+(mod < 0.5 ? 0.0 : 0.5) //0이 0.0으로 자동 형변환
▶자동 형변환이 일어나서 double타입으로 통일되고 연산결과도 double타입이 됨조건 연산자를 이용해 변수의 절대값을 구한 후, 부호를 붙여 출력하는 예제
18. 대입 연산자
대입 연산자
: 변수와 같은 저장공간에 값 또는 수식의 연산결과를 저장하는데 사용- 오른쪽 피연산자의 값(식이라면 평가값)을 왼쪽 피연산자에 저장하여 저장된 값을 연산결과로 반환
▶System.out.prinln(x=3); //변수 x에 3 저장
→System.out.println(3); //연산결과인 3 출력 - 연산자들 중 가장 낮은 우선순위를 가져 식에서 제일 나중에 수행
- 연산 진행방향이 왼쪽에서 오른쪽 방향
🍟 lvalue와 rvalue
lvalue(left value)
: 대입 연산자의 왼쪽 피연산자
▶변수뿐만 아니라 식이나 상수 등 모두 가능rvalue(right value)
: 대입 연산자의 오른쪽 피연산자
▶반드시 변수처럼 값을 변경할 수 있는 것. 리터럴이나 상수같이 값을 저장할 수 없는 것들은 불가- ex) x=3 ( x=lvalue, 3=rvalue )
int i = 0;
3 = i + 3; //에러.lvalue가 값을 저장하는 공간 아님
i + 3 = i; //에러.lvalue의 연산결과가 리터럴(i+3→0+3→3)
final int MAX = 3; //변수 앞에 키워드 final을 붙이면 상수가 됨
MAX = 10; //에러. 상수(MAX)에 새로운 값을 저장할 수 없음. 한번 저장된 값 못바꿈
19. 복합 대입 연산자
- 대입 연산자는 다른 연산자(op)와 결합하여
op=
와 같은 방식으로 사용
▶ex) 'i=i+3'은 'i+=3'과 같이 표현 가능 - 결합된 두 연산자는 반드시 공백 없이 붙여 써야함
op= | = |
---|---|
i += 3; | i = i + 3; |
i -= 3; | i = i - 3; |
i *= 3; | i = i * 3; |
i /= 3; | i = i / 3; |
i %= 3; | i = i % 3; |
i <<= 3; | i = i << 3; |
i >>= 3; | i = i >> 3; |
i &= 3; | i = i & 3; |
i ^= 3; | i = i ^ 3; |
i │= 3; | i = i │ 3; |
i *= 10+j; | i = i*(10+j); |
- 마지막 줄 처럼 대입 연산자의 우변이 둘 이상의 항으로 이루어져 있는 경우 'i*=10+j;'를 'i=i*10+j;' 로 오해하지 않도록 유의
Author And Source
이 문제에 관하여([Java의 정석]Chapter3.연산자(16~19)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wendy1126/Java의-정석Chapter3.연산자1619저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)