[Java] 자바 101 강의 - #3 (산술연산자, 산술연산 우선순위)
- Lecture/Java 강의
- 2022. 3. 23.
변수에 대해서 알아보았으니 이제 본격적으로 컴퓨터로 계산을 하기 위한 가장 기본적인 연산자에 대해서 알아보도록 하겠습니다.
자바에서는 다양한 연산자가 존재합니다. 다만 개발을 하면서 이것은 무슨 연산자가 명칭을 외울 필요는 없고 코딩을 하면서 스스로 습득을 하는 것이 가장 중요합니다.
산술연산자(arithmetic operator)
산술연산자는 사칙연산처럼 2개의 값을 계산하기 위해서 사용되는 연산자입니다.
산술 연산자 | 내용 | 예시 |
+ | 두개의 값을 더한다. | 1+2의 경우 3 |
- | 왼쪽 기준의 값에서 오른쪽 값으로 뺀다. | 2-1의 경우 1 |
* | 두개의 값을 곱한다. | 2*2의 경우 4 |
/ | 왼쪽 기준의 값에서 오른쪽 값으로 나눈다. | 4/2의 경우 2 |
% | 왼쪽 기준의 값에서 오른쪽 값으로 나눈 후, 나머지를 가져온다 | 3/2의 경우 1 |
위 예시의 내용을 그대로 코드로 확인을 해보겠습니다. 자바에서 내용을 출력하고 싶으면 아래와 같이 print 메소드를 사용하면 됩니다.
System.out.print(내용); // 문자열을 출력하나 개행을 하지 않는다.
System.out.println(내용); // 문자열을 출력하고 개행한다.
산술연산자 예시
public class Main {
public static void main(String args[]) {
System.out.println("1+2=" + (1+2));
System.out.println("2-1=" + (2-1));
System.out.println("2*2=" + (2*2));
System.out.println("4/2=" + (4/2));
System.out.println("3%2=" + (3/2));
}
}
결과
1+2=3
2-1=1
2*2=4
4/2=2
3%2=1
산술연산 우선순위
컴퓨터는 수학을 풀기 위해서 나온 것입니다. 그러다보니 컴퓨터를 만든 초창기의 사람들은 앨런 튜링(Alan Mathison Turing)과 같은 수학자들이 만들었습니다.
즉, 컴퓨터는 수학의 개념과 동일하기 때문에 우선순위를 산정하는 방식 역시 동일합니다. 산술 연산자의 우선순위는 다음과 같습니다.
- 기본 처리는 왼쪽에서 우측으로 이동한다.
- 괄호가 존재하면, 괄호를 가장 먼저 계산한다.
- 곱셈과 나눗셈, 나머지 연산(나머지 연산은 궁극적으로 나눗셈과 같습니다)이 덧셈, 뺄셈보다 먼저 연산된다.
위의 내용을 이해하였다면 다음의 문제의 값을 예측 할 수 있을테지요?
우선순위 문제
public class Main {
public static void main(String args[]) {
System.out.println( 1 + 2 * 3 );
System.out.println( (1 + 2) * 3 );
System.out.println( 4 / 2 * 6 );
System.out.println( 6 + 4 % 2 );
}
}
위의 문제를 직접 머리속으로 풀어본 후, 아래의 정답을 확인하시기 바랍니다.
우선순위 문제 정답
7
9
12
6
문제풀이
1. 첫번째 문제는 곱셈을 먼저 푼 후, 즉 2*3을 먼저 풀어서 1+6이 돼서 7이 됩니다.
2. 두번째 문제는 괄호 안에 있는 1+2를 먼저 계산 한 후, 3을 곱하기에 9가 됩니다.
3. 세번째 문제는 나눗셈과 곱셈은 동등한 순서이기 때문에, 순서대로 나누고 곱하기에 12가 나옵니다.
4. 마지막 문제는 나머지를 구하는 연산을 먼저 수행한 후, 6을 더합니다. 4 % 2는 나머지가 0이기 때문에 6 + 0이 되는 것이죠.
'Lecture > Java 강의' 카테고리의 다른 글
[Java] 자바 101 강의 - #5 (증감 연산자) (0) | 2022.03.28 |
---|---|
[Java] 자바 101 강의 - #4 (대입 연산자, assignment operator) (0) | 2022.03.24 |
[Java] 자바 101 강의 - #2 (변수와 기본 자료형) (0) | 2022.03.22 |
[Java] 자바 101 강의 - #1 ( JDK, IDE 설치 및 세팅 ) (0) | 2022.03.18 |
[Java] 자바 101 기초 강의 - #0 (강의 커리큘럼 및 설명) (0) | 2022.03.18 |