본문 바로가기

Programming/Java

#04. 연산자

이번 소개에서는 자바에서의 연산자를 소개해드리겠습니다.


연산자는 크게 최우선, 단항, 산술, 관계, 논리 연산자가 있어요.

우선순위는        높음 - - - - - - - - - - 낮음      이렇게되요.


그럼 각 연산자는 무엇이있는지 알려드릴께요



최우선 연산자: ( ), [ ], 점, 콤마


단항 연산자: !, ++/--, (cast)


산술 연산자: +, -, *, /, %


관계 연산자: >, <, >=, <=, ==, !=


논리 연산자: &&, ||



대략 자주쓰이는 연사자들 입니다.


이제부터 각 연산자의 대해서 설명과 예제를 소개시켜드릴께요.



1.최우선 & 산술 연산자


수학에서도 괄호가 어떤 연산자들 보다도 최우선으로 계산이 된다는것은 다들아시죠?

자바에서도 마찬가지에요 




이렇게 코드를 써봤는데요, 출력값은 어떻게 나올지 한번 생각해보세요.

모두 어떻게 나올지 예상하실수 있겠죠?





여기 출력결과가 말해주고있듯이 괄호을 넣고 계산한것과 그렇지 않은것의 차이점이 확실한걸 볼수가있어요. 더이상 설명안해도 모두 이해 하셨을거라고 믿어요 ㅋㅋ 초등학교 문제 내는 기분;;;



산술 연사자에서 보시면 우리가 수학에서는 쓰지 않는 기호 하나를 보실수있을거에요.

바로 모듈러스(Modulus)에요. 이 모듈러스는 값과 값을 나누고 나머지값을 구하는 연산자에요. 예를 들어서 보여드릴께요.



이런식으로 코드를 써봤습니다. 값은 뭐가 나올까요?


11을 10으로 나누고 나머지 값을 출력 할겁니다. 그럼 1이 나오겠죠?




1이 나왔네요. 이런식으로 모듈러스 연산자를 사용할수있어요.


대표적인 예로 짝수와 홀수를 구분할때 많이 써요.


값 % 2 를 해서 1이 나온다면 값은 홀수가 되겠죠

반대로 0이 나온다면 값은 짝수가 되는거구요.



산술 연산자를 다른식으로 코딩을 할수도 있어요.

예를들어 A라는 변수에 저장된 값을 다른 값과 계산해서 다시 A라는 변수에 집어넣고싶다면 우리가 배운 코드로는 A = A + 10; 이런식으로 쓰겠죠 하지만 좀더 간단하게 쓸수있는 방법이있어요.

 



이런식으로 쓸수가 있습니다. 


num = num + 10; 을 num += 10; 이런식으로 간단하게 쓸수가있는거죠. 


이 코드를 실행해보면





이런식의 출력을 얻을수가있어요. 이해가 잘안가신다면 제가 드린 코드를 천천히 보시고 출력값과 잘 비교해보세요 그럼 이해하는데 큰 도움이 되실꺼에요 ^^



2. 단항 연산자


단항 연산자는 값 하나로 연산을 할수있는 연산자에요.


단항 연산자는 위에 써있듯이 !, ++, --, (cast)가 있어요


하나하나씩 설명을 드릴께요.


우선 ++ 와 -- 는 계산하려는 값에서 1을 더하거나 뺄수있는 연산자에요.



위에 코드처럼 num 이라는 변수는 처음에 1을 가지고있지만 두번째줄에서 1을더하면서 출력하고있어요. 그럼 결과값은 2가 나오겠죠?


세번째 줄은 num 이라는 변수는 이미 2를 가지고 있고 거기서 1을 빼서 출력하고있어요.

그럼 결과값은 1이 나오겠지요~





여기서 ++ 와 --는 조금 다른 방법으로도 쓰일수가있어요


우리가 배운것은 ++변수 또는 --변수 이런식으로 계산했지만 다른방법은


변수++, 변수-- 방법도 있어요. 위에 방법과 아래 방법은 약간의 차이가있어요.


그림으로 설명을 드릴테니 잘보세요. ^^




이렇게 보면 다른점이 보이시죠? ++num할땐 출력값이 둘다 2 입니다

하지만 num++할땐 출력값이 하난1, 또다른하나는 2가 나오네요.


1번 코드를 보시면 ++num을 하고 바로 2를 출력 하네요

하지만 3번 코드를 보시면 num++를 했지만 아직 num값에 1이 더해지지 않았다는걸 알수가있습니다.

4번 코드를 실행할때야 num에 1을 더한값 2가 출력이 되요.


이와같이 ++num은 코드가 실행되는 즉시 num값에 1이 더해집니다

하지만 num++는 코드가 실행되고 다음 코드 부터 num에 계산된값이 들어갑니다.


다들 이해 하셨기를 ^^


또 다른 단항 연산자는 !가 있습니다.


!는 NOT이라는 의미를 가지고있어요. 반대를 말하는거죠.

그래서 단항연산자 !는 boolean변수에서만 쓸수가있어요


boolean 변수란 True 또는 False(0 또는 1)만 저장할수있는 변수에요.


예를 들어 boolean temp = true; 라는 변수를 정의해준다면

temp라는 boolean변수에는 true(1)이 저장되는거지요.



이런식의 코드가 있으면 temp라는 변수엔 true가 저장되있는겁니다.

이 코드를 한번 실행시켜 출력란을 볼께요.



단항 연산자 !의 기능이 보이시죠? 처음 temp를 출력하면 temp변수에 저장되있는 true가 출력 되지만 두번째 temp변수에 !를 붙여 출력하니 true의 반대인 false가 출력되네요.


또다른 단항 연산자 (cast)의 관해서는 명시적 데이터변환 에서 설명 드리도록 하겠습니다!



3.관계 연산자


관계 연산자는 두개의 값을 비교해서 true또는 false값을 가져오는 연산자입니다.

관계 연산자의 종류는 >, <, >=, <=, ==, != 들이 있습니다. 하나씩 살펴보도록할께요.



> 는 왼쪽 값이 오른쪽 값보다 큰지를 비교하는겁니다.

예를 들어 A > B 이런식으로 나타낸다면 A는 B보다 큰가를 보는겁니다.

만약 A가 B보다 클경우 true값을 뽑아오고 그렇지 않으면 false값을 가져오죠.

< 는 >과 반대라고 보시면 됩니다.



>= 는 왼쪽값이 오른쪽 값과 같거나, 큰지를 비교하는겁니다.

예를 들어 A >= B 이런식으로 나타낸다면 A는 B와 같거나 큰지를 보는거지요.

A가 B와 같아도 true, 커도 true을 가져옵니다. 작을경우엔 false를 가져오구요.

<= 또한 >=과 반대라고 보시면 됩니다!



== 는 왼쪽값과 오른쪽 값이 같은지를 비교하는겁니다.

예를 들어 A == B 이런식으로 나타낸다면 A와 B가 같은지를 보는거에요.

같으면 true, 틀리면 false. 간단합니다ㅋㅋ



!= 는 왼쪽과 오른쪽 값이 틀린지를 비교하는겁니다.

예를 들어 A != B 이런식으로 나타낸다면 A 와 B는 틀려야만 true값을 뽑아 오지요. 만약 두개의 값이 같다면 false를 가져옵니다.


이제 코드로 예를 들어 보여드릴께요.



이런식으로 예를 들어 보았습니다. 

출력값을 예상 해보시고 출력란이랑 한번 비교해보세요.




출력이 이런식으로 나왔네요. 예상했던거와 같이 나왔나요?

이해가 안가신다면 위에 연산자 설명을 다시 보시고 이해해보세요^^



4. 논리연산자


논리 연산자는 두개의 boolean값(true,false 또는 0,1)만 계산이 가능합니다.

논리 연산자에는 && 와 || 값이 있는데요 (| 는 \를 쉬프트 누르고 타입하시면 됩니다)


&&는 and라는 뜻으로 표로 설명해드릴께요


0 0    0        false, false = false

0 1    0        false, true  = false

1 0    0        true, false  = false

1 1    1        true, true   = true


이런 식의 표가 나옵니다. 쉽게 설명 드리자면 두개의 boolean값이 모두 true일때만 true값이 나옵니다. 나머지는 모두 false값이지요.



||는 or이라는 뜻으로 이것또한 표로 설명 해드릴께요


0 0    0        false, false = false

0 1    1        false, true   = true

1 0    1        true, false   = true

1 1    1        true, true    = true


이런식의 표가 나옵니다. 이것도 쉽게 설명 드리면 두개의 boolean값이 모두 false일때만 false 값이 나옵니다. 나머지는 모두 true에요.


이제 코드로 설명을 드리겠습니다.



이런식으로 코드를 짜봤습니다.

출력란은 제가 위에 표로 설명 해놨던것처럼 나올거같네요.





이런식의 출력이 나오네요. 위에 표와 같게 나온걸 알수가있네요 ^^

이해가 안되셨다면 표를 하나하나씩 천천히 살펴 보시고 코드 와 출력을 비교해가며 이해해보시길바래요 ^^



이번 소개는 여기까지 하겠습니다^^ 읽어주셔서 감사합니다!


'Programming > Java' 카테고리의 다른 글

#06. if, else 조건문  (0) 2012.09.06
#05. 명시적,자동적 데이터 변환  (0) 2012.09.06
#03. 입출력(I/O)기능2  (0) 2012.09.06
#02. 입출력(I/O)기능  (0) 2012.09.05
#01. print를 이용한 출력  (0) 2012.09.05