'연산자' 는 프로그래밍 언어에서 값을 계산 · 처리 하기 위해 사용하는 기호 혹은 단어라고 할 수 있습니다.'연산자' 에는 '증감 연산자', '산술 연산자', '시프트 연산자', '비교 연산자', '비트 연산자', '논리 연산자' 등이 있으나 이번에 알아볼 연산자는 '산술 연산자' 에 대해서입니다.
'산술 연산자' 는 우리에게 가장 친숙한 연산자이자 연산의 기본이라고 볼 수 있습니다.'산술 연산자' 의 종류로는 '+'(덧셈), '-'(뺄셈), '*'(곱셈), '/'(몫 나눗셈), '%'(나머지 나눗셈) 이 있습니다.
가장 먼저 알아볼 기호는 '+'연산자입니다.'+' 은 숫자끼리 더하면 '덧셈'을 수행하고 문자열을 더하면 'append'역할을 수행하게 됩니다. 이렇듯 다양한 작동을 할 수 있는 이유는 '+' 산술 연산자는 '오버로딩(Overloading)' 이 되어있기 때문입니다. '오버로딩'에 대하여 간략하게 설명하자면 동일 이름 으로 선언된 객체가 다중 작업 을 수행하는 것입니다.
다음은 '-' 연산자 입니다.'+' 와 '-' 의 가장 큰 차이점은 물론, 증감의 차이도 존재하지만 단연 '문자열' 에 대해 연산이 수행가능한가 에 대한 것입니다. 결론부터 말씀드리자면 '-' 는 '문자열' 에 대해 작동하지 않는다 는 것입니다. 때문에 문자열을 제거하기 위해서는 'String 메서드' 를 활용하여야 합니다.
'*' 연산자 역시 문자열에는 작동하지 않습니다.또한 'C 언어' 와 같이 '포인터' 의 역할을 수행하지도 않습니다.
'/' 연산자 의 특징은 자료형에 따라 '몫'만 구할 수 있습니다.해당 연산 진행 시 아래의 예시와 같이 '소수점' 까지도 계산이 가능합니다.
int a = 10;
int b = 20;
int c = 31;
int total = a + b + c;
int count = 3;
double avg1 = total / 3;
double avg2 = total / 3.0;
double avg3 = total / (double)count; // 강제 형변환(casting)
System.out.println("avg1 : " + avg1);
System.out.println("avg2 : " + avg2);
System.out.println("avg3 : " + avg3);
<※ 결과는 다음과 같습니다.>
마지막으로 '%' 연산자 의 특징은 '나머지' 를 연산하는 것이 가장 큰 특징입니다.이때 연산의 결과는 '정수형' 으로 나타나는데 해당 특징으로 인해 다음과 같이 자주 활용됩니다.
System.out.println("짝수 or 홀수");
System.out.println(10 % 2); // 2로 나누어 떨어지면 짝수
System.out.println(11 % 2); // 2로 나누어 떨어지지 않으면 홀수
<※ 결과는 다음과 같습니다.>
// 10의 n승으로 구성된 숫자로 나누면, 0의 개수만큼 뒷자리를 떼어낼 수 있다
int birth = 1208;
int day = birth % 100;
int month = birth / 100;
System.out.printf("생일은 %d월 %d일 입니다\n", month, day);
<※ 결과는 다음과 같습니다.>
Random ran = new Random(); // import java.util.Random; 을 사용
int num = ran.nextInt();
num = num < 0 ? - num : num; // 0보다 작으면 부호를 반전시켜서 저장한다(삼항 연산자)
System.out.println("첫번째로 뽑은 난수 : " + num);
int num2 = num % 6;
System.out.println("6으로 나누 나머지 : " + num2);
int num3 = num2 + 1;
System.out.println("1을 더한 결과 : " + num3);
<※ 결과는 다음과 같습니다.>