일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- External Scheme
- spring
- preprocessing
- 셀레니움
- systemd
- Java
- 리눅스 마스터 1급
- X.org
- 백준
- Binary Search
- Entity
- dbms
- Physical Scheme
- X윈도우
- Polymolphism
- Mac
- 자바
- descriptive statistics
- selenium
- Inheritance
- Class
- Entity Set
- Reference Type
- literal
- OOP
- Operator
- 리눅스
- BFS
- python
- Unity
- Today
- Total
Byeol Lo
Computer Language - Basic Operators 본문
수식을 프로그래밍언어에서는 expression이라고 부르고, 그안에는 operands(피연산자)와 operators(연산자)가 있다.
Priority | Operator | Associativity | Operand | Description |
1 | [] . ++ -- +, - ~ ! new (type) |
⇐ | All Reference Integer, Float-point Integer, Float-point Integer, Float-point Integer Boolean Reference All |
배열 요소 지정 객체 멤버 지정 값 증가 값 감소 부호에 사용 비트Bit 반전 논리Boolean 반전 객체 생성 (Casting) 형 변환 연산자 |
2 | +, /, % | ⇒ | Integer, Float-point | 산술 계산 |
3 | +, - + |
Integer, Float-point String |
산술 계산 String Concatenation |
|
4 | << >> >>> |
Integer | 비트 연산 | |
5 | <, <=, =>, > instanceof |
Integer, Float-point Reference |
값의 대소 비교 객체 타입 비교 |
|
6 | == != == != |
Primitive Primitive Reference Reference |
비교 연산자 | |
7 | & & |
Integer Boolean |
bit AND Boolean AND |
|
8 | ^ ^ |
Integer Boolean |
bit XOR logic XOR |
|
9 | | | |
Integer Boolean |
bit OR Boolean OR |
|
10 | && | Boolean | Boolean AND | |
11 | || | Boolean | Boolean OR | |
12 | ? : | All | Ternary Operator | |
13 | = +=, -=, %=, /=, *=, ... |
⇐ | All | Assignment Operators |
주의 깊게 볼 것은 모든 Boolean, Bit 관련 연산자는 기본적으로 우리가 알고 있는 산술 연산보다 나중에 일어난다는 것이고, AND, XOR, OR 순으로 무조건 연산 순서가 진행되며, 비교연산에 있어서 기본형 타입이 먼저 일어난다. 그외에도 중요하게 알아야 할 부분은 밑에 적어놓았다.
- Boolean, Bit 연산자는 기본적인 산술 연산보다 나중에 일어남
- AND, XOR, OR 순으로 연산 순서가 진행됨
- Primitive 타입이 먼저 일어남
- postfix, prefix등의 부호나 ~, !, new, ., [] 등은 casting 보다 먼저 일어나게 된다.
Bit & Shift
기본적으로 모든 데이터는 0, 1로 저장된다. 숫자들은 2진수로 표현될 수 있고, 여기서 각각의 자리수에 따른 AND, XOR, OR 연산을 수행할 수 있다. 하지만 파이썬에서는 이런 연산들이 있지만, <<나 >>, >>> 연산은 조금 생소할 수 있을 것 같아 다뤘다.
Operator | Description |
x << n | 비트를 ← 로 n만큼 땡기고, 밀어진 부분은 잘리며, 생기는 부분은 0으로 채워진다. |
x >> n | 비트를 → 로 n만큼 땡기고, 밀어진 부분은 잘리며, 생기는 부분은 MSB를 따라서 복제된다. |
x >>> n | 비트를 → 로 n만큼 땡기고, 밀어진 부분은 잘리며, 생기는 부분은 0으로만 채워진다. |
Postfix Operator
x++, x-- 등의 뒤에 붙는 것을 Postfix Operator라고 한다. 이때, 연산은 우선순위가 높지만, return은 연산되기 이전이 연산되기 때문에 programmer 입장에서는 실제로 연산이 안된거 아닌가 라고 생각할 수 있다. 하지만, 그건 착각이다. 실제로 헷갈리는 다음 코드를 보자
int x=10;
x += x++;
System.out.println(x);// What is the result of x?
x에는 실제로 어떤 값이 들어갈까? x++가 먼저 되니깐 11이며 11과 11을 더한 것이니 22 아닐까 라는 생각을 할 수도 있다. 하지만 실제로 출력해보면 IntelliJ java 11버전 기준으로 20이 저장되어 있다. 이는 설명하기가 매우 난해하며, 해당 코드를 실무에서 볼 일은 아예 없으니 안심해도 될 것이다. 이에 대한 설명으로 다음 링크를 붙인다
https://blog.naver.com/ruvendix/220897091153
Ternary operator
(조건) ? (참 반환 값) : (거짓 반환 값) 으로 실행되며, 조건에 따라 값이 달라진다. 이는 단순한 반복문이라고 생각해도 된다. 하지만 너무 중첩시켜서 사용하면 가독성이 떨어지니 매우 간단한 값 할당에만 사용하기를 바란다.
'Programming Language > Java' 카테고리의 다른 글
Computer Language - Reference Type (0) | 2023.05.01 |
---|---|
Computer Language - Condition & Loop (2) | 2023.04.30 |
Computer Language - I/O System (0) | 2023.03.22 |
Computer Language - Casting(Type conversion) (0) | 2023.03.13 |
Computer Language - Variables & Types & Constant (0) | 2023.02.28 |