안녕하세요. 디버깅하는 노인입니다.
이전 시간에는 자바 프로그래밍에 필요한 데이터 타입들에 대해서 알아보았습니다.
이번 시간에는 숫자 데이터를 연산하여 결과를 출력하는 방법에 대해서 공부해보겠습니다.
연산이란 우리가 흔히 알고 있듯 숫자와 숫자를 더하고(+) 빼고(-) 곱하고(*) 나누기(/) 하는 것입니다.
기본 중에 기본이라 어려운 내용은 없을 것입니다.
그러면 인텔리제이를 통해서 알아보도록 합시다.
자바를 통한 더하기, 빼기, 곱하기, 나누기, 나머지 연산 예제
코드를 간단하게 설명 드리면 다음과 같습니다.
먼저 연산을 하기 위해서는 2개 이상의 변수가 필요합니다.
그래서 변수를 먼저 선언 해줍니다.
int number1 = 4;
int number2 = 2;
첫 번째 변수에는 4를 두 번째 변수에는 2를 대입하였습니다.
그리고 System.out.println(); 을 통해서 출력되는 결과 값을 알아봅시다.
첫 번째 결과 : 4 + 2 = 6
두 번째 결과 : 4 - 2 = 2
세 번째 결과 : 4 * 2 = 8
네 번째 결과 : 4 / 2 = 2
다섯 번째 결과: 4 % 2 = 0
여섯 번째 결과 : (4 + 1) % 2 = 1
아주 간단하게 결과가 나왔습니다.
우리들이 알고 있는 4칙 연산 과정과 동일하게 결과가 출력되었습니다.
"근데 % 이거는 무엇인가요?"
%는 변수1과 변수2가 나누기 과정을 거쳐서 남는 숫자를 출력하는 연산자 입니다.
예를 들어 위 예제 같이 4 나누기 2를 했을 경우 2로 나누어 떨어지므로 나머지가 존재하지 않아 0이 출력됩니다.
나머지가 출력되게 하기 위해 여섯 번째 결과를 보시면 첫 번째 변수인 4에다가 1을 더하고 그 다음 2로 나누어 떨어진 값을 출력하니 1이라는 숫자가 출력이 되었습니다.
그럼 이번에는 쫌 더 실험적인 예제를 알려드리겠습니다.
수학 공부를 한참 안하셨거나 별로 좋아하시지 않았던 분들은 약간 헷갈릴 수도 있을 것입니다.
그렇다고 어려운 것은 아니니 천천히 생각해보시면 답을 아실 수 있을 것입니다.
1 + 4 * 2 - 3 / 3 의 값은 얼마일까요?
뭐 이것쯤이야 하시는 분들도 있고...
다른 한편으로는
이렇게 되신 분들도 있으시겠죠? ㅎㅎㅎㅎ
답이 무엇일까요?
1 + 4를 먼저 더하고 그다음 2를 곱하고 그다음 3을 뺀 다음 나누기 3??
아니면
4 곱하기 2 더하기 1 빼기 3 나누기 3??
정답은 8입니다.
당연히 8이라고 대답하신 분들도 있겠지만,
요즘 들어 이런 문제가 페이스북에 나돌아다니면서 옳지 않은 답을 말씀하시는 분들이 가끔 있더랍니다.
우리가 초등학교 수학시간에 배웠던 4칙 연산의 순서에 대해서 알아볼까요?
1) 곱하기 혹은 나누기를 더하기 혹은 빼기 보다 우선으로 연산한다.
예) 1 + 4 * 2 = 9
4 곱하기 2를 먼저한 다음 1을 더해줍니다.
2) 괄호가 존재할 경우 곱하기 혹은 나누기 보다 우선적으로 연산한다.
예) (1 + 4) * 2 = 5 * 2 = 10
곱하기가 우선 연산이긴 하나 괄호가 있으므로 1 + 4를 먼저 연산
3) 뒤에 존재하는 연산보다 앞에 존재하는 연산이 우선한다.
예) 1 + 4 * 2 - 2 = 4 * 2 + 1 -2 와 동일
곱하기를 먼저한 다음 앞에 있는 + 1을 연산하고 이후 - 2를 연산
그래서 위 예제를 설명 드리면
1 + 4 * 2 - 3 / 3 은 4 * 2 를 먼저 연산하고 그 다음 3 / 3을 먼저 연산 합니다.
그렇게 되면 1 + 8 - 1이 되겠죠?
그럼 답은 8이 나오겠죠.
어떠세요? 아직도 헷갈리시나요?
"이거 프로그래밍 할 때 많이 쓰나요?"
어느 정도 쓰긴 씁니다.
다만, 소스 코드의 가독성을 위해서 저런식으로 표현하지 않습니다. 보통 아래와 같이 표현합니다.
(4*2) + 1 - 1
여기서 + 1 - 1 연산은 의미가 없기 때문에 결과적으로 4 * 2 정도로 하게 되죠.
결론은 최대한 간결하게 쓰려고 합니다. 그리고 헷갈릴 요소가 있다면 괄호를 첨가해 한눈에 이해하기 쉽게 적는 것이 정석입니다.
그리고 숫자를 자체를 연산하기 보다 변수 간 연산을 많이 사용 합니다.
if( (n1 * n2) - n3 )
대충 이런식으로 말이죠.
그래서 너무 이것에 대해서 어렵게 생각 하지 않으셔도 무방합니다.
그리고 저의 짧은 경험으로 봤을 때 사칙 연산 순서를 잘 몰라도 개발하다 보면 알아서 체득하는 신기 방기한 현상이 발생하게 됩니다.
따라서, 너무 신경 쓰지 않으셔도 무방합니다. ㅎㅎㅎㅎ
"문자열은 연산을 못하나요?"
문자는 여러분들이 잘 아시다시피 연산을 할 수 없습니다만
더하기(+)는 가능합니다.
인텔리제이를 통해 예제를 확인해 봅시다.
hello 라는 문자열 변수와 hi 라는 문자열 변수를 더하기(+) 하게 되면 어떻게 될까요?
여러분들도 어느정도 예측이 되시죠?
결과 : 안녕하세요! 반갑습니다.
기존 hello 변수에 담겨져 있는 문자열 바로 뒤에 붙여서 hi의 문자열 정보가 대입되게 됩니다.
그래서 "안녕하세요! 반갑습니다" 이렇게 출력이 되는 원리죠.
"그래도 왠지 빼기도 될 것 같은데요??"
- 연산자는 문자열과 문자열에 적용할 수 없습니다.
(Operator '-' cannot be applied to 'java.lang.String', 'java.lang.String')
더하기 이외에 빼기 곱하기 나누기 나머지 등등 다른 연산자를 쓰면 오류가 발생하게 됩니다.
그래서 문자열은 더하기(+) 연산만 가능하다는 점 알고 계시면 됩니다. ㅎㅎㅎㅎ
벌써 쓰다가 보니 시간이 6시가 넘은 시각입니다.
오늘은 금요일이니 짧게 공부하도록 하겠습니다.
즐거운 금요일, 즐거운 주말 보내세요.
감사합니다.
'Java 기본' 카테고리의 다른 글
[Java] String, char, boolean에 대해서 알아보자 (0) | 2016.03.17 |
---|---|
[Java] 자바 숫자 데이터 타입(Data Type)에 대해서 알아보자 (0) | 2016.03.17 |
[Java] 좀 더 강력크한 Intelli J IDEA 설치하기 (0) | 2016.03.17 |
[Java] Eclipse IDE를 설치하고 간단한 코드를 작성하기 (0) | 2016.03.16 |
[Java] 자바 공부를 위한 환경 만들기 (1) | 2016.03.16 |