자바 스터디
3주차 과제: 연산자
삶은겨란
2022. 5. 18. 22:33
목표
자바가 제공하는 다양한 연산자를 학습하세요.
목차
1. 산술 연산자
2. 증감 연산자
3. 비트 연산자
4. 관계 연산자(비교 연산자)
5. 논리 연산자
6. instanceof
7. 대입 연산자 assignment(=) operator
8. 화살표(->) 연산자
9. 3항 연산자
10. 연산자 우선 순위
11. (optional) Java 13. switch 연산자
1. 산술 연산자
연산자 | 의미 |
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ | 나누기 |
% | 나머지 |
2. 증감 연산자
연산자 | 내용 |
a++ | a를 1증가, 증가 전 값 반환 |
++a | a를 1증가, 증가 후 값 반환 |
a-- | a를 1감소, 감소 전 값 반환 |
--a | a를 1감소, 감소 후 값 반환 |
3. 비트 연산자
(1) 비트 논리 연산
연산자 | 연산 | 내용 |
a&b | AND 연산 | 두 비트 모두 1이면 1, 아니면 0 |
a|b | OR 연산 | 두 비트 모두 0이면 0, 아니면 1 |
a^b | XOR 연산 | 두 비트가 같으면 0, 다르면 1 |
~a | NOT 연산 | 1은 0으로, 0은 1로 |
(2) 비트 시프트 연산
연산자 | 내용 |
a>>b | a의 각 비트를 오른쪽으로 b만큼 시프트. 최상위 비트는 전의 최상위 비트. |
a<<b | a의 각 비트를 왼쪽으로 b만큼 시프트. 최하위 비트는 0. |
a>>>b | a의 각 비트를 오른쪽으로 b만큼 시프트. 최상위 비트는 0. |
>>: 1비트 시프트하면 /2
<<: 1비트 시프트하면 *2
4. 관계 연산자(비교 연산자)
두 개의 피연산자를 비교해 true(1), false(0)의 논리 값을 내는 연산자
연산자 | 내용 |
a<b | a가 b보다 작으면 true |
a>b | a가 b보다 크면 true |
a<=b | a가 b보다 작거나 같으면 true |
a>=b | a가 b보다 크거나 같으면 true |
a==b | a와 b가 같으면 true |
a!=b | a와 b가 같지 않으면 true |
5. 논리 연산자
연산자 | 내용 |
!a | a가 true이면 false, false이면 true |
a||b | OR연산 |
a&&b | AND연산 |
a | b | OR | AND |
T | T | T | T |
T | F | T | F |
F | T | T | F |
F | F | F | F |
6. instanceof
래퍼런스가 가르키는 객체가 어떤 클래스 타입인지 구분하는 연산자
래퍼런스 instanceof 클래스명
래퍼런스가 가리키는 객체가 해당 클래스의 타입의 객체면 true, 아니면 false
Person joe = new Student();
Person amy = new Professor();
if(joe instanceof Person); // true
if(joe instanceof Student); // true
if(joe instanceof Professor); // false
7. 대입 연산자 assignment(=) operator
연산자의 오른쪽 식의 결과를 왼쪽의 변수에 대입한다.
a=b | a+=b | a-=b | a*=b |
a/=b | a%=b | a&=b | a^=b |
a|=b | a<<=b | a>>=b | a>>>=b |
8. 화살표(->) 연산자
자바8에서 람다 표현식 도입
메소드를 하나의 식으로 표현
화살표 연산자는 람다 표현식을 만들 때 사용한다.
(매개변수) -> { 함수몸체; }
9. 3항 연산자
피연산자 세개를 가지는 조건 연산자
조건식?반환값1:반환값2;
// true면 반환값1 반환, false면 반환값2 반환
10. 연산자 우선 순위
높음 낮음 |
++(postfix) --(postfix) |
+(양수 부호) -(음수 부호) ++(prefix) --(prefix) ~(비트) !(논리) | |
형변환 | |
* / % (산술) | |
+ - (산술) | |
<< >> >>> | |
<> <= >= instanceof | |
== != | |
& (비트 AND) | |
^(비트 XOR) | |
|(비트 OR) | |
&&(논리 AND) | |
||(논리 OR) | |
? : (조건) | |
= += -= *= /= %= &= ^= |= <<= >>= >>>= (대입) |
11. (optional) Java 13. switch 연산자
조건문을 사용할 때 값이 여러 분기로 나뉘는 경우 유용하다.
switch (식) {
case 값1: // 값은 정수리터럴, 문자리터럴, 문자열리터럴만 가능
실행문장1;
break; // 실행문장이 실행되고 switch문을 벗어남
case 값2:
실행문장2; // break문이 없어서 case2가 실행되면 case3까지 넘어감
case 값3:
실행문장3;
break;
default: // 어떤 케이스문으로도 분기하지 못하는 경우. 생략가능
실행문장n;
}