티스토리 뷰
이전 장들..
이번 장에서는 '연산자'라는 개념을 다룰 것이다.
'연산'이라는 개념은 수학에서 흔히 접해 보았을 것이다. 그냥 더하기 빼기 등등 말이다. 프로그래밍에서는 몇 가지가 추가되긴 했지만, 겁먹을 것 없다. 아니, 오히려 쉽다.
자바에서 제공하는 이항 연산자들
일단 '이항'이라는 단어에 대해서는 겁먹을 필요 없다, '연산자' 라는 단어에 주목하자.
+, -, * (덧셈, 뺄셈, 곱셈) 까지는 보인다. 프로그램 상에서 나눗셈은 '/(슬래쉬)'이다. 다른 것들은 차차 배워 보도록 하겠다.
연산자의 우선순위와 결합방향
우선순위는 모두 알 것이다. 덧셈과 뺄셈보다는 당연히 곱셈을, 괄호가 있는 연산을 먼저 한다는 논리가 똑같이 적용된다. 결합방향은 위 표에서 볼 수 있듯 어디에서 어디로 (좌변에서 우변으로, 우변에서 좌변으로) 연산하는지에 따른 내용이다.
대입 연산자와 산술 연산자
다음 표를 보자.
첫째 '='는, 우리가 흔히 보아 온 같다 (equal) 의 개념과 같아 보인다. 하지만, 프로그램 상에서 볼 때 그 의미는 다르다.
의미는 다음과 같다.
- = : 연산자 오른쪽에 있는 값을 연산자 왼쪽에 있는 변수에 대입한다.
- == : 우변과 좌변이 서로 같다는 의미이다.
1번 내용은 위 표에 나와있는 대로다. 2번 내용은 추후에 다시 설명하겠다. (이항 연산자 표에는 나와 있다.)
둘째와 셋째, 넷째, 그리고 다섯째 연산자는 모두 아는 내용이므로 건너뛰겠다.
여섯째 '%' 연산자는 무엇일까? 수학에서 말하자면 퍼센트를 의미한다. 프로그래밍에서 의미하는 바는 다르다.
이는 나눗셈 연산과 관련이 있는데, 우선 '/' 연산자는 좌변을 우변으로 나누는 연산자였다. '%' 연산자는, 좌변을 우변으로 나누고, 그 나눈 값의 나머지를 돌려주는 연산자이다.
아래 예시를 보겠다. 편의상 클래스와 메인 메소드는 생략한다.
int a = 5; int b = 11; int c = a / b; int d = a % b; |
위 c, d의 결과값은 어떻게 나올지 생각해 보자.
우선 c는, a를 b로 나눈 값이니 11 나누기 5 즉 2.5가 된다. 하지만, int형이니 소수점 뒤는 제거하고, 2가 나올 것이다.
d는, a를 b로 나눈 값의 나머지이니 11 나누기 5 즉 2 나머지 1이다. 즉 최종값은 1이 나오게 된다.
복합 대입 연산자
이 연산자는 더하기 빼기와 같은 연산자가 아니라, 연산을 단순화시키기 위해 탄생한 연산자이다.
무슨 말인가 하면, 아래 이미지가 설명할 것이다.
설명할 것도 없지만, 원래 식이 왼쪽 식이라고 한다면, 오른쪽 식처럼 단순화할 수 있다는 것이다.
왼쪽 식의 +, -, *, /, %를 좌항으로 옮긴다고 생각하면 된다. 간단하니 노코멘트.
관계 연산자
관계 연산자는, 좌항과 우항이 무슨 관련이 있는지다. 그냥 부등호다.
다섯째 항목은 앞에서 설명하였고, 여섯째 항목은 처음 보는 연산자이다. 그냥 단순히 '=='와 '!='는 반대라고 보면 된다.
다음과 같은 원리다.
1 == 1 : 1은 1과 같다. 1 != 2 : 1은 2와 같지 않다. |
논리 연산자
말그대로 논리를 따지는 연산자다. 혹시, 논리회로를 아시는 분들은 도움이 많이 된다. AND, OR, NOT 연산이기 때문이다.
&&가 AND, ||가 OR, !가 NOT 연산이다.
모르는 분들을 위해 설명하자면, 다음과 같다.
AND 연산은 피연산자1과 피연산자2가 모두 true일 경우에만 true를 반환한다.
OR 연산은 피연산자1과 피연산자2 중 1개 이상의 연산이 true이면 true를 반환한다.
NOT 연산은 피연산자가 참이면 거짓을, 거짓이면 참을 반환한다.
연산자는 이게 전부다.
물론 비트 연산자도 있긴 하지만 2진수를 다루는 연산자이고, 필자의 주관적인 의견으로는 실무에 별 도움이 되지 않을 것이라 판단하여 글에 싣지 않는다.
도움받은 책들 :
|
|
다음 장 바로가기 >>
'프로그래밍 > Java' 카테고리의 다른 글
10장. 실행 흐름의 컨트롤 - switch문 (0) | 2018.07.30 |
---|---|
9장. 실행 흐름의 컨트롤 - if문, 삼항 연산자 (0) | 2018.07.30 |
7장. 형 변환 (0) | 2018.07.27 |
6장. 상수 (0) | 2018.07.27 |
5장. 변수와 자료형 (0) | 2018.07.26 |
- Total
- Today
- Yesterday
- dockerhub
- Material
- 안드로이드
- 디자인
- ecr
- 메터리얼
- uiux
- Container
- 테라폼
- 컨테이너
- 도커
- Terraform
- 스타트업
- Operator
- 자바
- 자격증명
- HCL
- DESIGN
- cmd
- env
- entrypoint
- AWS
- EC2
- 자료형
- main
- Java
- docker
- Android
- 머티리얼
- dockerfile
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |