티스토리 뷰

프로그래밍/Java

8장. 연산자

_andy_ 2018. 7. 27. 23:02

이전 장들..

1장. 개발환경 세팅하기 (java, eclipse)

2장. Eclipse 기본 사용법

3장. 자바 메인 메소드, 기본 출력

4장. 컴퓨터가 읽지 않는 문자, 주석

5장. 변수와 자료형

6장. 상수

7장. 형 변환


이번 장에서는 '연산자'라는 개념을 다룰 것이다.

'연산'이라는 개념은 수학에서 흔히 접해 보았을 것이다. 그냥 더하기 빼기 등등 말이다. 프로그래밍에서는 몇 가지가 추가되긴 했지만, 겁먹을 것 없다. 아니, 오히려 쉽다.


자바에서 제공하는 이항 연산자들

일단 '이항'이라는 단어에 대해서는 겁먹을 필요 없다, '연산자' 라는 단어에 주목하자.



+, -, * (덧셈, 뺄셈, 곱셈) 까지는 보인다. 프로그램 상에서 나눗셈은 '/(슬래쉬)'이다. 다른 것들은 차차 배워 보도록 하겠다.


연산자의 우선순위와 결합방향

우선순위는 모두 알 것이다. 덧셈과 뺄셈보다는 당연히 곱셈을, 괄호가 있는 연산을 먼저 한다는 논리가 똑같이 적용된다. 결합방향은 위 표에서 볼 수 있듯 어디에서 어디로 (좌변에서 우변으로, 우변에서 좌변으로) 연산하는지에 따른 내용이다.


대입 연산자와 산술 연산자

다음 표를 보자.



첫째 '='는, 우리가 흔히 보아 온 같다 (equal) 의 개념과 같아 보인다. 하지만, 프로그램 상에서 볼 때 그 의미는 다르다.

의미는 다음과 같다.

  1. = : 연산자 오른쪽에 있는 값을 연산자 왼쪽에 있는 변수에 대입한다.
  2. == : 우변과 좌변이 서로 같다는 의미이다.

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 프로그래밍
국내도서
저자 : 윤성우
출판 : 오렌지미디어 2017.07.05
상세보기

Java의 정석 - 자바의 정석
국내도서
저자 : 남궁성
출판 : 도우출판 2010.01.29
상세보기


다음 장 바로가기 >>

'프로그래밍 > 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
링크
«   2025/01   »
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
글 보관함