자바 스터디

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;
}