[유튜브 강의] (6) JAVA 초급 강좌 - 연산자, 연산식

2017. 3. 1. 20:50[유튜브 강의]- 센치한 개발자/[JAVA] 자바 기초 강의 - 완료

728x90

[센치한 개발자-유튜브 강의] (6) JAVA 초급 - 연산자, 연산식 :: 기초 강의







[ 들어가며 ]


연산 ( operation ) 이란

연산은 수학에서 말하는 계산, 산수와 비슷한 개념이지만, 컴퓨터 프로그래밍의 '연산'은 특정한 "명령"이나 "동작"들을 정해진 "순서"에 의해서 실행하는 유기적으로 연결된 계산쯤으로 생각하면 될 것 같네요. 이를 위한 방법으로 "연산식"이라는 녀석을 사용하구요~



연산을 왜 사용 하나요??


우선 연산을 하려면 연산"식"이라는 방식을 사용해야 하는데, 제일 간단한 예로는 1 + 1 입니다. 


우리는 이 문장을 보고 "아, 앞에 있는 1에 뒤에 있는 1을 더한다" 고 바로 읽을 수 있죠.  (더한다는 개념도 학교에서 배웠고, 그 더하기가 + 라는 것도 알고 있고요~)



컴퓨터도 우리가 명령하는 여러가지 많은 방식에서도 "연산을 하라는 명령"을 이해하는 방"식"이 있고 이에 맞게 코딩을 해야 이해할 수 있는 것이지요.





다시 말해서,


컴퓨터에게 이렇게 연산을 이해하는 방식, 즉 연산식을 통해 코딩을 하는 이유는 다름아닌 돈 벌어 먹고 살ㄹ....(빡)



연산식을 하지 않으면 우리가 얻기를 바라는 "결과"로 전혀 도달하기 어렵겠죠~


바로 위에서 살펴본 것 처럼, 단순하지만 " 1과 1을 더하라"는 명령을 컴퓨터에게 내리고 싶은데, "더한다"는 "+"와 같은 연산식을 모른다면 어떻게 명령을 내릴 수 있을까요~


단순히 사칙연산(더하기,빼기,나누기,곱하기)보다 더 나아가서 좀 더 복잡한 것을 컴퓨터에게 말할 수 없다면!?!?!


역시나 컴퓨터는 아무 대답도 하지 않겠죠 ㅠ... 

   



연산자와 연산식의 의미는?


먼저 연산을 하려면 연산을 해주는 약속, 즉 그 문자들이 어떻게 생긴 건지 알아야 겠죠.

 

연산을 하기 위한 문자 자체를 "연산자"라고 하고,


이러한 연산자들을 이용하여 계산하는 "식"을 "연산식"이라고 합니다. 

 

규칙없이 그때그때 다르게 연산을 해버린다면 동일한 결과를 얻을 수 없기에, 연산자에 연산식을 하기위한 "규칙"이 존재합니다.


이 규칙은 다름아닌, "우선순위와 결합방향을 고려한 연산"입니다. 



이제 본격적으로 연산자에 대해서 알아보면서 어떻게 연산자들끼리 중에서 우선순위가 정해지고 어떻게 어느 방향으로 결합이 되는지 알아보죠~ 




+초급이 싫어





(1) 연산자의 종류


컴퓨터에게 연산을 하라고 알려주기 위해 사용하는 문자인 연산자는, 우리가 학창시절에 배운 산수를 많이 닮아 있습니다.


일단 연산식에서 사용하고 있는 자바의 연산자 문자들을 나열해보면 다음과 같습니다. (쉼표(,)로 구분했습니다)


 +,  -,  *,  /, %, <, >, =, !, (, ), [, ], &, ?, :, |  


 

몇개 되지 않죠~? 


다만, 이제 위의 문자들을 바탕으로 막 조합(?)을 해서 다양한 의미로 사용하게 됩니다.


그리고 그 문자에 따라 컴퓨터가 연산을 수행할때 어떤 문자를 가장 우선으로 적용할 지에 대한 "우선순위"와 값들에 대해 연산할때 그 방향을 왼쪽값에서 오른쪽값으로 할 지 오른쪽값에서 왼쪽값으로 할 지에 대한 "결합방향"을 판단하게 됩니다.


아래 표를 전체적으로 먼저 보고  하나씩 살펴보죠~


초급이라고 일부러 표시한 것은, 나머지 부분들은 눈으로만 간단히 익혀놓으시라는 의미에서 구분했습니다~


( 제 강의는 전세계에서 제일 저렴하고 후리(?)한 강의를 지향하기 떄문에 뭔소린지 모르겠다~~~하는 부분으로 인하여 프로그래밍에 흥미를 잃으실까봐 당장은 편하게 접근하시라는 의미에서 앞으로도 "초급이 싫어"라든가 아래 표처럼 "초급" 표시를 하려고 합니다 ㅎ ) 


 이름 

 예

 결합방향

 우선순위

 초급

 최우선 연산 

(    )    [    ]   . 

 ---->

 높음

 O

 단항(증감,부호,논리)

 값++    값--     +    -     ~     !      (타입)

 <----

  O

 산술

 *     /     %

 ---->

  O

 

 +      -

 ---->

  O

 시프트

 <<     >>    >>>

 ---->

  

 비교

<     >    <=     >=     instanceof   

 ---->

  O

 

==    != 

 ---->

  O

 논리

 ---->

 

 
  ^ ---->  
  | ---->  
  && ---->  O
  || ---->  O
 삼항

? : 

 ----> 

 

 대입

=   *=   /=   %=   +=   -=   <<=   >>=   >>>=   &=   ^=   |= 

 <----

 낮음 O/X



우선순위란,


연산자끼리 만났을때(?) 누가 우선적으로 연산할 권한을 갖느냐의 기준입니다.


*. 같은 순위에 있는 녀석들끼리 만나면 글을 왼쪽에서 오른쪽으로 읽듯이,  코딩도 "왼쪽"에 있는 녀석이 먼저입니다. 



결합방향은,


연산자 좌우에 무언가 값이 있을때 


--> 이면 왼쪽에 있는 값을  오른쪽의 값으로(방향으로) "연산"하며


<-- 이면 오른쪽에 있는 값을 왼쪽의 값으로(방향으로) "연산"한다는 의미 입니다.



그래서,


연산할때는 "우선순위"에 따라 먼저 연산할 연산자를 선택하게 되고, 이후 "결합방향"에 따라 "연산"하게 됩니다.






728x90