[Java] 기초 3

최우형·2023년 2월 20일
1

Java

목록 보기
3/24
post-thumbnail

📌연산자?

연산자란, 하나의 값 또는 여러 개의 값을 피연산자로 하여 새로운 값을 만들어내는 기호를 의미한다.

산술 연산자

산술 연산자는 사칙연산에 사용되는 연산자 (+,-,*,/)와 나머지 연산자(%)를 포함한다.

산술 연산자의 동작은 일반적인 수학 연산과 거의 동일하다.

연산자기능예시(int)결과값
+두 항의 값을 더한 값을 반환한다.7 + 310
(덧셈 연산자)
-좌항의 값에서 우항 값을 뺀 값을 반환한다.7 - 34
(뺄셈 연산자)
*두 항의 값을 곱한 값을 반환한다.7 * 321
(곱셈 연산자)
/좌항을 우항으로 나눈 값을 반환한다.7 / 32
(나눗셈 연산자)
%좌항의 값을 우항의 값으로 나눈 나머지를 반환한다.7 % 31
(나머지 연산자
또는 모듈로 연산자)
예시
int num1 = 1;
int num2 = num1 + 2; // num2 -> 3
int num3 = num2 - 1; // num3 -> 2
int num4 = num3 * 3; // num4 -> 9
int num5 = num4 / 2; // num5 -> 4
int num6 = num5 % 3; // num6 -> 1

나눗셈 연산자와 나머지 연산자를 사용할 때에 우항에 0이 위치할 수 없다.

예시
int    num1 = 9 / 0;   // 에러
double num2 = 9.0 / 0; // Infinity

int    num3 = 9 % 0;   // 에러
double num4 = 9.0 % 0; // 에러

좌항이나 우항 중 하나라도 실수 타입의 값이 존재한다면, 실수 타입이 아닌 값도 자동으로 형변환되어 계산되며, 결과적으로 실수 간의 나눗셈 연산이 되어 소수점이 버려지지 않은 온전한 값으로 반환된다.

예시
double num1 = 9 / 2;   // 4.0
int    num2 = 9 / 2;   // 4
double num3 = 9.0 / 2; // 4.5

증감연산자

예시
num1 = num1 + 1; // num1의 값은 2가 된다. 
num2 = num2 - 1; // num2의 값은 0이 된다. 
예시
num1++; // num1 = num1 + 1;과 같다.
++num1; // num1 = num1 + 1;과 같다.

num2--; // num2 = num2 - 1;과 같다.
--num2; // num2 = num2 - 1;과 같다.

증감연산자가 피연산자보다 앞에 있으면 전위형 증감연산자, 뒤에 있으면 후위형 증감연산자라고 한다

  • 전위형 증감연산자 : 증감 연산을 먼저 수행한 후, 그 결과값을 적용시킨다.
  • 후위형 증감연산자 : 기존의 값을 먼저 적용시키고 그 다음에 증감 연산을 수행한다.
예제
int num1 = 1;
int prefix = ++num1;

int num2 = 1;
int postfix = num2++;
  • num1 & prefix : num1에 전위형 증감연산자 ++를 사용했으므로, num1의 값이 1만큼 먼저 증가된 다음 그 결과값이 prefix에 할당된다.
    • 따라서 num1의 값은 2, prefix의 값도 2가 된다.
  • num2 & postfix : num2에 후위형 증감연산자 ++를 사용했으므로, num2의 값이 먼저 postfix에 할당된 다음에 num2의 값이 1 증가한다.
    • 따라서 num2의 값은 2, postfix의 값은 1이 된다.

복합 대입 연산자

예시
num1 = num1++;
num2 = num2--;

증감연산자에서 사용한 예시는 1씩 증가시키거나 감소시킬 때 사용할 수 있다.
하지만 2 혹은 3씩 증가시키거나 감소시키고 싶을 때 증감 연산자를 사용할 수 없다.

예시
num1 = num1 + 2;
num2 = num2 - 2;

이렇게 바꿔쓸 수 있음

예시
num1 += 2;
num2 -= 2;

모든 사칙 연산자 및 나머지 연산자와 대입 연산자를 결합해서 복합 대입 연산자로 사용할 수 있다.

예시
// num1~5의 값을 모두 10이라고 한다면,
num1 += 3; // num1 -> 13
num2 -= 3; // num2 -> 7
num3 *= 3; // num3 -> 30
num4 /= 3; // num4 -> 3
num5 %= 3; // num5 -> 1

비교 연산자

비교 연산자는 boolean타입으로 평가될 수 있는 조건시겡 사용되며, 크게 대소 비교(>,<,<=,>=) 연산자와 등가비교 (==,!=) 연산자로 분류된다.

대소 비교 연산자

대소 비교 연산자는 boolean을 제외한 나머지 기본 타입에 모두 사용할 수 있다.

대소 비교 연산자결과
5 > 3true
5 <= 5true
3 > 2true
2 >= 3false

x가 1보다 크고 5보다 작다를 표현할 때, 1 < x < 5가 아닌, 1 < x && x < 5와 같이 논리 연산자를 사용해 작성해야한다.

등가 비교 연산자

등가 비교 연산자는 모든 타입에 사용할 수 있는 연산자로, 두 항의 값이 동등한지의 여부를 판단할 때 사용한다.

등가 비교 연산자결과
5 == 3false
5 == 5true
3 !=2true
3 !=3false

논리 연산자

논리 연산자는 AND 연산자 &&, OR 연산자 ||, NOT 연산자 !를 포함하며, 공통적으로 boolean 타입을 반환한다.

  • AND 연산자(&&) : 피연산자 두 개가 모두 true 일 때 true를 반환, 피연산자 두 개 중 하나라도 falsefalse를 반환한다.

  • OR 연산자(||) : 피연산자 두 개 중 단 하나라도 truetrue를 반환한다. 모두 false일 경우면 false를 반환한다.

NOT 연산자(!)는 truefalse를 반대로 바꾸는 연산자이다.

예시
// 아래의 비교 연산 결과는 모두 true다. 
!true == false 
!false == true
!!true == true

연산자 우선 순위

우선순위연산자내용
1(),[]괄호/대괄호
2!,~,++,--부정/증감 연산자
3*, /, %곱셈 / 나눗셈 연산자
4<, <=, >, >=대소 비교 연산자
5&&AND 연산자
6||OR 연산자
7? :조건 연산자
8=, +=, -=, /=, %=대입/할당 연산자

일반적인 수학 우선순위 규칙과 비슷하다.


profile
프로젝트, 오류, CS 공부, 코테 등을 꾸준히 기록하는 저만의 기술 블로그입니다!

0개의 댓글