산수 연산자는 우리가 일반적으로 사칙연산에 사용하는 연산자들이다.
산수연산자를 사용할 때의 몇가지의 약속이 존재하는데 다음과 같다.
<산수연산자 규칙>
-산술연산자(이상 연산자)의 결과는 다양하다
-산술연산자내에서의 연산 우선순위 (*,%,/) > (+,-)
-우선 순위가 같은 경우 왼쪽에서 오른쪽으로 연산한다.
-산술연산자를 써서 식을 만들면 산술식
간단한 예제를 보자
▲ 위에서 제시한 산수연산자 규칙에 따라서 계산하면 결과는 -3이 출력된다.
비교연산자는 말 그대로 비교를 하는 연산자이다.
비교연산자에도 몇 가지의 규칙이 있는데 다음과 같다.
<비교연산자 규칙>
- 비교연산자(이항연산자)의 결과는 true아니면 false
- 비교연산자는 모두 우선순위가 같다
- 산술연산자가 비교 연산자보다 우선 순위가 높다
- 비교연산자를 사용한 식은 비교식
<논리연산자와 규칙>
- 논리연산자(이항연산자 또는 단항연산자)의 결과값은 true, false이다.
1) && : and연산자는 두 항이 모두 참일때만 참이다. (우리가 영어에서 쓰는 A and B 구문과 동일한 형태이다.)
2) || : or연산자는 두 항중 하나라도 참이면 참이다. (우리가 영어에서 ㅆ는 A or B 구문과 동일한 형태이다,)
3) ! : not연산자는 유일하게 단항으로 이루어지는 연산자이고, 단항의 결과값을 반대로 바꿔주는 기능을한다.
단항이 참이면 거짓, 거짓이면 참으로 출력한다.
4) ^ : xor연산자(배타연산자)는 두 항이 값이 다를 때만 참이다. 즉, 두 항의 값이 서로 같으면 거짓이 되는 것이다.
- 논리연산자의 우선 순위는 ! > && > ||, ^ 순으로 이루어지며 단항이 이항보다 우선순위가 높다.
- &&와 &, ||와 |는 결과값은 같다. 하지만 우리는 무조건 둘로 이루어진 것을 사용하도록 하자. why?
&&는 첫째항이 false이면 어차피 둘째항이 true이더라도 결과는 false이기 때문에 둘째항을 계산안한다. 하지만
&는 첫째항이 false이더라도 두번째항을 계산하기 때문에 불필요한일을 하게 되버리기 때문이다.(||도 같은 원리)
- 산술연산자 > 비교연산자 > 논리연산자 순으로 우선순위가 적용된다.
논리연산자의 예제들을 보자.
-&&-
▲ 둘째 줄에서 && 양쪽의 값이 모두 true가 아니므로 false가 되고 그 값이 b에 저장된다. 결과적으로 b는 false가 된다.
-||-
▲ || 에서는 양쪽 값중 하나라도 true면 true이므로 b는 true가 된다. 결과적으로 true가 출력된다.
-^-
▲ ^에서는 양쪽값이 서로 달라야 true가 된다. 결과적으로 true가 출력된다.
-연산자들의 혼합사용-
연산자들이 혼합사용 되었을 때는 - 산술연산자 > 비교연산자 > 논리연산자 순으로 우선순위가 적용된다.
예제1)
예제2)
예제3)
<대입연산자>
우리가 앞선 변수포스팅에서 알아본 내용이다.
변수명 = 값; 의 구조가 있으면 대입연산자(=)의 오른쪽에 있는 값을 왼쪽의 변수에 대입한다.
▲ num1이라는 변수선언과 동시에 100이라는 값을 통해 초기화도 시켰다. 변수선언과 동시에 초기화를 시킬때는 대입연산자 왼쪽에 있는 변수가 먼저 생성된 다음 대입연산자 우측의 값이 생성된 변수에 대입하게 된다.
--축약형식의 대입연산자
이때 여러가지 축약형식의 대입연산자들이 존재하는데 +=, -=, *=, %= 등이 있다.
예제와 설명을 보면 도움이 될 것이다.
▲ 위 예제처럼 축약형을 쓰면 코드가 훨씬 짧아진다.
--증감연산자
증감연산자는 단항 연산자이며 증가연산자(++)와 감소연산자(--)가 있다.
++는 자기자신을 1증가시키며,
--는 자기자신을 1감소시킨다.
단독으로 쓰일 때는 항이 증감연산자 앞에 붙거나 뒤에 붙거나 결과는 같다. 하지만 다른 연산자와 결합할 때는
++(또는--)변수 : 자신을 증감시킨다. (전위 연산)
변수++(또는--) : 다른 연산을 수행한 후 자신을 증감시킨다. (후위 연산)
예제를 보자.
1)단독으로 사용시
▲ 단독으로 사용 시에는 자기 자신 외에 다른 연산이 없으므로 똑같은 기능을 수행하게 된다.
따라서 num3++와 ++num3에서 각각 1씩 더해져 결과적으로 num3는 12가 된다.
2)다른연산과 함께 사용시
▲ 후위 연산에서는 num4와 num3의 연산이 끝난 후 1을 더하기 때문에 result는 100이 되고 num3는 11이 된다.
전위 연산에서는 num3에 1을 먼저 더해서 12가 되고 이후 연산을 진행하기 때문에 result는 120이 되는 것을 볼 수 있다. 이처럼 부호의 위치 차이 하나만으로도 값의 차이가 커지게 될 수 있다.
'Java' 카테고리의 다른 글
[Java]제어문(Control Statement) - switch문 (0) | 2022.02.25 |
---|---|
[Java]제어문(Control Statement) - if문 (0) | 2022.02.25 |
[Java]Format String (0) | 2022.02.24 |
[Java]Escape문자 (0) | 2022.02.24 |
[Java]형변환(TypeCasting) (0) | 2022.02.24 |