지난 글: [프로그래밍 언어/JAVA] - JAVA 입문 - 형 변환
항과 연산자란?
연산에 사용하는 기호를 연산자(operator)라고 한다.
그리고 연산에 사용하는 값을 항(operand)이라고 한다.
예를 들어 6+21에서 6과 21은 항이고 +는 연산자이다.
연산자는 항의 개수에 따라 단항 연산자, 이항 연산자, 삼항 연산자로 나뉜다.
단항 연산자는 항이 한 개, 이항 연산자는 항이 두 개이다. 사칙연산이 대표적인 예다.
그리고 프로그램에서 사용하는 조건 연산자가 있는데, 바로 항이 세 개가 필요한 삼항 연산자이다.
사칙연산에서 곱셈과 나눗셈을 덧셈, 뺄셈보다 먼저 계산하는 것을 볼 수 있다.
이러한 연산 순서를 '연산자 우선순위'라고 한다.
프로그램에서 사용하는 연산자도 우선순위가 있다.
단항 연산자 > 이항 연산자 > 삼항 연산자 순서이다.
대입 연산자
대입 연산자(assignment operator)는 변수에 값을 대입하는 연산자이다.
대입 연산자는 이항 연산자 중 우선순위가 가장 낮은 연산자이다.
즉, 하나의 문장에 여러가지 연산자가 있을 때 모든 연산을 다 끝낸 후 마지막에 연산 결과를
변수에 대입하는 것이다.
왼쪽 변수 = 오른쪽 변수(또는 식)
totalScore = matheScore + engScore //mathScore 값과 engScore 값을 더하여
//총점을 의미하는 totalScore에 대입
앞으로 공부할 대부분의 연산을 수행하고 나면 결과 값이 만들어지는데, 그 결과 값을 변수에 대입할 것이다.
따라서 대입 연산자는 프로그래밍에서 가장 많이 사용하는 연산자이다.
* 대입 연산자를 기준으로 왼쪽에 있는 변수를 lValue, 오른쪽에 있는 변수를 rValue라고 한다.
대입 연산자를 사용하면 항상 rValue 값을 가져와 lValue에 대입한다. 따라서 값이 대입되는 lValue에는
10 같은 숫자가 올 수 없고 항상 변수나 상수가 와야한다. rValue에는 변수나 숫자(상수)가 올 수 있다.
부호 연산자
부호 연산자는 +, - 두 가지이다. 더하기, 빼기 연산에 쓰는 이항 연산자이면서 부호를 나타내는
단항 연산자로도 사용된다.
1 + 2 //이항 연산자로 1과 2를 더한 값을 구한다.
+3 //단항 연산자로 3의 값을 양수로 만든다.
-4 //단항 연산자로 4의 값을 음수로 만든다.
산술 연산자
사칙 연산에서 사용하는 연산자가 산술 연산자이다. 프로그램에서 산술 연산자는 덧셈(+), 뺄셈 (-),
곱셈(*), 나눗셈(/), 나머지(%) 이렇게 다섯 가지다.
% 연산자는 5 % 3; 이라는 식에서 5를 3으로 나누고 나머지인 2가 값이 되는 연산자이다.
산술 연산자의 우선순위는 일반 수학의 산술 연산과 같고, % 연산자는 *, / 연산자와 동일한 우선순위이다.
1 + 2 = 3 //1과 2의 합하여 값이 3이 된다.
2 * 3 = 6 //2와 3을 곱하여 값이 6이 된다.
4 / 2 = 2 //4에서 2를 나누어 값이 2가 된다.
7 % 3 = 1 //7에서 3을 나누고 나머지인 1이 값이 된다.
증가, 감소 연산자.
증가, 감소 연산자는 단항 연산자이다. 피연산자 앞이나 뒤에 사용하며 값을 1만큼 늘리거나 1만큼 줄인다.

val = ++num; //먼저 num 값이 1 증가한 후 val 변수에 대입
val = num++; //val 변수에 기존 num 값을 대입한 후 num 값 1 증가
val = --num; //먼저 num 값이 1 감소한 후 val 변수에 대입
val = num--; //val 변수에 기존 num 값을 대입한 후 num 값 1 감소
연산자를 피연산자 앞에 쓰는 경우와 뒤에 쓰는 경우 결과 값이 전혀 다르기에 주의해야한다.
관계 연산자
관계 연산자는 이항 연산자이다. 두 개의 항 중 어느 것이 더 큰지, 작은지, 같은지 등의 여부를 검사한다.
관계 연산자의 값은 참(true) 또는 거짓(false)로 반환된다.

int myAge = 19;
boolean value = (myAge < 20);
system.out.println(value); //출력 결과: true
논리 연산자
논리 연산자는 명제를 생각하면 된다. 두 명제가 모두 참이면 논리 곱은 참, 두 명제 중 하나만 참이면 논리 합은 참이다.
참의 부정은 거짓, 거짓의 부정은 참이다. 논리 연산자는 주로 관계 연산자와 함께 사용된다.
관계 연산자가 논리 연산자보다 연산자 우선순위가 높으므로, 관계 연산자의 결과 값을 기반으로
논리 연산자의 결과 값을 계산한다.

논리 연산에서 모든 항이 실행되지 않는 경우 - 단락 회로 평가
논리 곱 연산이나 논리 합 연산을 할 때 두 항을 모두 실행하지 않더라도 결과 값을 알 수 있는 경우,
나머지 항은 실행되지 않는다. 이를 단락 회로 평가(Short Circuit Evaluation; SCE)라고 한다.
int num = 5;
int i = 10;
boolean value = ((num = num * 5) > 10) || ((i = i / 2) < 10);
system.out.println(value);//true
system.out.println(num);//25
system.out.println(i); //앞선 항에서 논리 합 연산의 결과 값을 알 수 있으므로 나머지 항은 실행 되지 않아 i의 출력 결과는 10이 된다.
복합 대입 연산자
복합 대입 연산자란 대입 연산자와 다른 연산자를 조합해 하나의 연산자처럼 사용하는 연산자다.
산술 연산자, 비트 연산자와 함께 사용하여 코드를 간결하게 표현할 수 있다.
대입 연산자는 우선순위가 가장 낮다. 연산이 모두 끝나고 마지막으로 결과 값을 변수에 대입한다.
복합 대입 연산자 역시 연산한 결과 값을 변수에 대입한다.

조건 연산자
조건 연산자는 연산에 필요한 항의 개수가 세 개이다. 그래서 삼항 연산자라고도 한다.
조건 연산은 주어진 조건식이 참인 경우와 거짓인 경우에 다른 결과 값이 나온다.

참고 서적: 자바 프로그래밍 입문 - 박은종
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
JAVA 입문 - 조건문 (2) | 2022.05.02 |
---|---|
JAVA 입문 - 비트 연산자 (4) | 2022.05.02 |
JAVA 입문 - 형 변환 (0) | 2022.05.01 |
JAVA 입문 - 상수와 리터럴 (0) | 2022.05.01 |
JAVA 입문 - 변수의 자료형 (0) | 2022.04.30 |