JAVA/자바 이론 / / 2021. 4. 11. 21:57

Java | 2-1 자바 기본 프로그래밍

01. 식과 연산자

 ◆ 산술, 논리, 비트, 시프트 연산자

 ◆ 비교, 대입, 증감 연산

 

# 식과 연산자

º 연산 : 주어진 식을 계산하여 결과를 얻어내는 과정

# 연산자 우선 순위

º 같은 우선순위의 연산자

- 왼쪽에서 오른쪽으로 처리

- 예외) 오른쪽에서 왼쪽으로

-> 대입 연산자, --, ++, +, -, !, 형 변환은 오른쪽에서 왼족으로 처리

º 괄호는 최우선순위

- 괄호가 다시 괄호를 포함한 경우는 가장 안쪽의 괄호부터 먼저 처리

# 산술 연산자

+ 더하기
- 빼기
* 곱하기
/ 나누기
% 나머지

# 비트 연산자

º 피 연산자의 각 비트들을 대상으로 하는 연산

a & b a와 b의 각 비트들의 AND 연산
두 비트 모두 1일 때만 1이 되며 나머지는 0
a | b a와 b의 각 비트들의 OR 연산
두 비트 모두 0일 때만 0이 되며 나머지는 1
a ^ b a와 b의 각 비트들의 XOR 연산
두 비트가 서로 다르면 1, 같으면 0
~ a 단항 연산자로서, a의 각 비트들에 NOT 연산
1을 0으로, 0을 1로 변환

# 시프트 연산자

a >> b a의 각 비트를 오른쪽으로 b 번 시프트한다.
최상위 비트의 빈자리는 시프트 전의 최상위 비트로 다시 채운다.
산술적 오른쪽 시프트
a >>> b a의 각 비트를 오른쪽으로 b 번 시프트한다.
그리고 최상위 비트의 빈자리는 0으로 채운다
논리적 오른쪽 시프트
a << b a의 각 비트를 왼쪽으로 b 번 시프트한다.
그리고 최하위 비트의 빈자리는 0으로 채운다.
산술적 왼쪽 시프트

Tip : 산술적 시프트와 논리적 시프트

º 산술적 오른쪽 시프트

- >>는 1비트 오른쪽으로 시프트할 때마다 2로 나누기 하는 결과

º 산술적 왼쪽 시프트

- << 연산자는 1비트 시프트할 때마다 2로 곱하는 결과

- 음수(최상위 비트가 1)는 시프트 결과 최상위 비트가 0인 양수가 되는 오버플로 발생 가능 주의

º 논리적 오른쪽 시프트

- >>>는 시프트 시 최상위 비트에 항상 0이 삽입

- 나누기의 산술적 효과가 나타나지 않음

º byte, short, char 타입의 시프트 연산 시 주의 사항

- int타입으로 변환되어 연산이 일어나므로 원하지 않는 결과 발생 가능

 

# 비교 연산자

a < b a가 b보다 작으면 true 아니면 false
a > b a가 b보다 크면 true 아니면 false
a <= b a가 b보다 작거나 같으면 true 아니면 false
a >= b a가 b보다 크거나 같으면 true 아니면 false
a == b a와 b가 같으면 true 아니면 false
a != b a가 b와 같지 않으면 true 아니면 false

# 대입 연산자

a += b a = a + b과 동일
a -= b  a = a - b과 동일
a *= b  a = a * b과 동일
a /= b  a = a / b과 동일
a %= b a = a % b과 동일
a &= b  a = a & b과 동일
a ^= b a = a ^ b과 동일
a |= b  a = a | b과 동일
a <<= b a = a << b과 동일
a >>= b a = a >> b과 동일

# 증감 연산자

a++ a을 먼저 사용한 후에 1증가
a-- a을 먼저 사용한 후에 1감소
++a a을 먼저 1 증가한 후에 사용
--a a을 먼저 1 감소한 후에 사용

# 증감 연산자의 순서

º 연산자가 피연산자 뒤에 붙는 경우

int a, b = 4;
a = b++;
//결과 a = 4, b = 5

º 연산자가 피연산자 앞에 붙는 경우

int a, b =4;
a = ++b;
//결과 a = 5, b = 5

# 조건 연산자 ? :

º opr1 ? opr2 : opr3

- 세 개의 피연산자로 구성되어 삼항(ternary) 연산자

- opr1이 true이면 값은 opr2, false이면 opr3

- if-else에 비행 문장이 간결해짐

public class TernaryOperator {
	public static void main (String[] args) {
    	int a = 3, b = 5;
        System.out.println("두 수의 차는 " + ((a>b) ? (a-b) : (b-a)));
  	}
}

 

 

'JAVA > 자바 이론' 카테고리의 다른 글

Java | 3-1 반복문과 배열  (0) 2021.04.12
Java | 2-2 자바 기본 프로그래밍  (0) 2021.04.11
Java | 1-2 자바 기본 프로그래밍  (0) 2021.04.11
Java | 1-1 자바 기본 프로그래밍  (0) 2021.04.11
Java | 시작  (0) 2021.04.11
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유