자바의 연산자

Minji Lee·2025년 3월 19일
0

JAVA

목록 보기
6/13

기본 연산자

대입 연산자

변수에 값을 대입하는 연산자 ex) int age = 24;

부호 연산자

+: 변수나 상수 값을 양수로 만든다.
-: 변수나 상수 값을 음수로 만든다

int num = 10;
System.out.println(+num); // 10
System.out.println(-num); // -10
System.out.println(num); // 10

num = -num; // 음수로 변경
System.out.println(num); // -10

산술 연산자

+: 두 항을 더한다.
-: 앞에 있는 항에서 뒤에 있는 항 빼기
*: 두 항을 곱한다.
/: 앞에 있는 항에서 뒤에 있는 항 나누어 몫 구하기
%: 앞에 있는 항에서 뒤에 있는 항 나누어 나머지 구하기

int mathScore = 90;
int engScore = 70;

int totalScore = mathScore + engScore;
System.out.println(totalScore); // 160

double avgScore = totalScore / 2.0;
System.out.println(avgScore); // 80.0

증감 연산자

++: 항의 값에 1을 더한다.
--: 항의 값에 1을 뺀다.

int gameScore = 150;

int lastScore1 = ++gameScore;
System.out.println(lastScore1); // 151;

int lastScore2 = --gameScore;
System.out.println(lastScore2); // 150

int value = 10;
int num = ++value;
System.out.println(num); // 11
int num2 = value++;
System.out.println(num2); // 11

관계 연산자

>: 왼쪽 항이 크면 참, 아니면 거짓 반환
<: 오른쪽 항이 크면 참, 아니면 거짓 반환
>=: 왼쪽 항이 크거나 같으면 참, 아니면 거짓 반환
<=: 오른쪽 항이 크거나 같으면 참, 아니면 거짓 반환
==: 두 개 항의 값이 같으면 참, 아니면 거짓 반환
!=: 두 개 항이 다르면 참, 아니면 거짓 반환

int myAge = 28;
boolean value = (myAge > 25);
System.out.println(value); // true

논리 연산자

&&: 두 항이 모두 참인 경우에만 결과 값이 참, 그렇지 않으면 거짓
||: 두 항 중 하나의 항만 참이면 결과 값은 참, 두 항 모두 거짓이면 결과 값은 거짓
!: 단항 연산자로, 참인 경우는 거짓으로 변경하고, 거짓인 경우는 참으로 변경

int num1 = 10;
int num2 = 20;

boolean flag = (num1 > 0) && (num2 > 0);
System.out.println(flag); // flag는 참

flag = (num1 < 0) && (num2 > 0);
System.out.println(flag); // 거짓

flag = (num1 < 0) || (num2 > 0);
System.out.println(flag); // 참

❗️단락 회로 평가: 논리 연산에서 모든 항이 실행되지 않는 경우

int num1 = 10;
int i = 2;

// ((i = i + 2) < 10)은 실행되지 않음! 앞의 식이 이미 false 이므로
boolean value = ((num1 = num1 + 10) < 10) && ((i = i + 2) < 10);
System.out.println(value); // false
System.out.println(num1); // 20
System.out.println(i); // 2

// ((i = i + 2) < 10)은 실행되지 않음! 앞의 식이 이미 true 이므로
value = ((num1 = num1 + 10)) > 10 || ((i = i + 2) < 10);
System.out.println(value); // true
System.out.println(num1); // 30
System.out.println(i); // 2

복합 대입 연산자

연산자기능
+=두 항의 값을 더해서 왼쪽 항에 대입
-=왼쪽 항에서 오른쪽 항을 뺴서 그 값을 왼쪽 항에 대입
*=두 항의 값을 곱해서 왼쪽 항에 대입
/=왼쪽 항을 오른쪽 항으로 나누어 그 몫을 왼쪽 항에 대입
%=왼쪽 항을 오른쪽 항으로 나누어 그 나머지를 왼쪽 항에 대입
<<=비트를 왼쪽으로 이동하고 그 값을 왼쪽 항에 대입
>>=비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입(왼쪽에 채워지는 비트는 부호 비트와 동일)
>>>=비트를 오른쪽으로 이동하고 그 값을 왼쪽항에 대입(왼쪽에 채워지는 비트는 0)
&=두 항의 & 비트 연산 후 그 값 왼쪽 항에 대입
|=두 항의 | 비트 연산 후 그 값 왼쪽 항에 대입
^=두 항의 ^ 비트 연산 후 그 값 왼쪽 항에 대입

조건 연산자

조건식 ? 결과 1 : 결과 2
조건식이 참이면 결과 1, 조건식이 거짓이면 결과 2 선택


비트 연산자

& 연산자

두 개의 비트 값이 모두 1인 경우에만 연산의 결과 값이 1이됨

| 연산자

두 개의 비트 값이 하나라도 1이면 연산 결과 값이 1이 됨

^ 연산자

같은 값이면 0, 다른 값이면 1

~ 연산자

비트 값을 0은 1로, 1은 0으로 바꾸는 연산

<< 연산자

왼쪽으로 비트 이동하는 연산자

int num = 5; // 0 0 0 0 0 1 0 1
num << 2; // 0 0 0 1 0 1 0 0

>> 연산자

오른쪽으로 비트 이동하는 연산자

int num = 10; // 0 0 0 0 1 0 1 0
num >> 2; // 0 0 0 0 0 0 1 0

>>> 연산자

오른쪽으로 비트 이동하는데, 왼쪽에 채워지는 비트값이 무조건 0


연산자 우선순위

우선순위연산자연산방향
1일차식()[].->
2단항! ++ -- + -<-
3산술% / *->
4산술+ -->
5비트 이동<< >>->
6관계< > <= >=->
7관계== !=->
8비트 곱&->
9비트 차^->
10비트 합|->
11논리 곱&&->
12논리 합||->
13조건?:->
14대입= += -= *= %= /=<-

0개의 댓글