목차
- 연산자(operator) 란?
- 산술 연산자
- 대입 연산자
- 증감 연산자
- 비교 연산자
(비교 연산자정리) - 논리연산자
(논리 연산자정리) - 연산자 우선순위
- 문자열 비교
연산자(operator)란?
자바 연산자란 변수나 값에 대해 특정 연산(계산, 비교, 논리 판단 등)을 수행하여 결과를 반환하는 특수 기호
즉 주어진 식을 계산하여 결과를 얻어내는 과정을 연산이라고 하며,
연산을 수행하는 기호를 연산자라고 합니다~!
자바의 연산 종류 및 연산자는 다양하지만, 하나씩 쉽게 풀어볼게요~!
먼저 연산자와 피연산자
연산을 수행하려면 반드시 연산의 대상이 있어야 하는데, 이를 피연산자(operand)라고 해요.
| A | + | 1 |
| 피연산자(operand) | 연산자(operator) | 피연산자(operand) |
연산자(operator) : 연산을 수행하는 기호(+,-,*,/ 등)
피연산자(operand) : 연산자의 작업 대상(변수, 상수, 수식)
산술 연산자
자바 산술 연산자는 사칙연산(+, -, *, /)과 나머지연산(%)모듈러를 포함한 5가지 기본 연산자로,
수치 데이터를 계산하는 데 사용됩니다.
실제로 적용한 코드를 하나씩 풀면서 설명을 드려볼게요~!
package chapter1.operator;
public class Main {
static void main(String[] args) {
int a = 10;
int b = 3;
먼저 저는 이따 추후에 소수점까지 설명을 위하여 a = 10, b = 3 을 선언해주었습니다.
나눗셈말고는 딱히 특이점이 없으므로, 간략하게 코드만 보여드리겠습니다 :)
1. 덧셈 ( + ) 연산
int sum = a + b;
System.out.println("sum = " + sum);
//sum = 13
2.뺄셈 ( - ) 연산
int sub = a - b;
System.out.println("sub = " + sub);
//sub=7
3.곱셈 ( * ) 연산
int mul = a * b;
System.out.println("mul = " + mul);
//mul = 30
4.나눗셈 ( / )연산
int div = a / b;
System.out.println("div = " + div);
//div = 3
double div2 = a / 3.0;
System.out.println("div2 = " + div2);
//div2 = 3.3333333333333335
💡나눗셈은 좀 특이해요~ a=10 b=3 라고 했으니 10/3 이라 생각하시면
int를 사용했을때 소수점이 버려지게 되어 div=3이라는 정수값만 출력이 됩니다~!
그럼 이 부분을 해결하려면 정수형/정수형 이 아닌 정수형/소수형을 나누시면 됩니다~!
그러므로 소수점변수인 double를 사용해주고 3이 아닌 3.0을 입력해주시면 소수점 값이 전부 나오며,
더블형이 표현해줄수있는 자릿수만큼 반올림처리를 해서 올라오는 모습을 보실수있습니다 :)
5.모듈러(%) 연산자 (나머지 연산)
모듈러연산은 나머지값을 출력해주는 연산이라 생각하시면됩니다 :)
코드를 보시면 더욱더 쉽게 이해하실수 있으실거에요~!
int mod = 10 % 3;
System.out.println("mod = " + mod);
//mod = 1
int mod2 = 15 % 4;
System.out.println("mod2 = " + mod2);
//mod2 = 3
int mod3 = 20 % 7;
System.out.println("mod3 = " + mod3);
//mod3 = 6
이러한 연산자들을 왜 알아야 하냐 하실수도 있는데 코딩에서 굉장히 많이 쓰인다해요~!
예를 들어 "10시에서 5시간뒤가 몇시에요?" 라고 하였을때
//시간연산
int mod4 = (10 + 5) % 12;
System.out.println("mod4 = " + mod4);
//mod4 = 3
이런식으로 산술 연산을 사용하여 3시 입니다. 라고 편하게 이용할수있기 떄문입니다.
마찬가지로 짝수일까 홀수일까를 볼때도 연산자를 활용하여 나오는 값에 따라 알수있는거죠.
//짝수 홀수 연산
int mod5 = 6 % 2;
System.out.println("mod5 = " + mod5);
//mod5 = 0 (짝수)
int mod6 = 7 % 2;
System.out.println("mod6 = " + mod6);
//mod6 = 1 (홀수)
0 이 나오면 짝수, 1이 나오면 홀수 구나 라고 프로그래밍적으로 판단할수 있는겁니다 :)
대입 연산자
대입연산자는 크게 두가지가 있습니다.
1. 대입연산자 ( = )
- 대입연산자는 ( = ) 는 변수에 값을 할당하는데 사용 됩니다.
- 연산자 중에 제일 마지막에 수행되는 특징이 있습니다.
int num = 5;
System.out.println("변수 num의 값: " + num);
// 5
2.복합 대입 연산자 ( += , -= , *= , /= , %=)
- 복합대입연산자는 누적 값을 구할 때 자주 활용
- 변수의 원래 값에 특정 값을 연산하여 다시 그 변수에 대입할 때 코드를 간결하게 작성하기 위해 사용
굉장히 복잡해 보일수 있지만 사실 풀어서 보면 굉장히 간단하므로 코드로 한번 풀어서 설명을 해볼게요:)
//복합 대인 연산자
num += 3;
// 풀어서 보면 num = num(5) + 3;
System.out.println("num = " + num);
//num = 8
num -=2;
// 풀어서 보면 num = num(8) -2;
System.out.println("num = " + num);
//num = 6
num *= 2;
// 풀어서 보면 num = num(6) *2;
System.out.println("num = " + num);
//num =12
num /= 3;
// 풀어서 보면 num = num(12) / 3;
System.out.println("num = " + num);
//num =4
num %= 3;
// 풀어서 보면 num = num(4) % 3;
System.out.println("num = " + num);
//num =1
일단 아까 대입 연산을 설명드리면서 num = 5 라는 값을 할당해주었다는 점을 참고해서 보시면 굉장히 쉽죠?ㅎ
증감 연산자
증감연산자는 변수의 값을 1씩 증감 시키는 증가연산(Increment)++ ,
1씩 감소시키는 감소연산 (Decrement) --가 있는데요~!
변수의 앞에 오면 전위 연산, 변수의 뒤에 오면 후위 연산이라고 합니다.(요건 증감연산 뒤에 설명드릴게요~:)
1.증감 연산
//증감연산자 (실무에서자주사용)
num = 1;
num++; (1이 증가되어 num =2)
num++; (1이 증가되어 num =3)
num--; (1이 감소되어 num =2)
num--; (1이 감소되어 num =1)
System.out.println("num = " + num);
//그러므로 num = 1
증감연산은 크게 어려운것이 없더라구요~ ++하면 1이 증가 --를 하면 1이 감소라고 생각하시면 되요~!
제가 헷갈렸었던 포인트는 전위후위 연산인데 일단은 비교하는 자료를 간략하게 표로 알려드린후
코드로 보시기 쉽게 설명드릴게요 :)
| 연산자 | 사용예시 | 설명 |
| 증가 연산 (++) | ++a (전위연산) | a를 1증가시킨후 값이 활용 |
| a++ (후위연산) | a를 활용한후 재출력시 1증가 | |
| 감소 연산 (--) | --a (전위연산) | a를 1감소시킨후 값이 활용 |
| a-- (후위연산) | a를 활용한후 재출력시 1감소 |
1.전위 연산
전위 연산은 말 그대로 연산후 값이 활용되어 출력(Shift+F10)을 했을때, 연산후 값이 출력됩니다.
//전위연산 (++i) 은 연산후 값이 활용됩니다.
int C = 5;
System.out.println("(++c) = " + (++C));
//(++c) = 6
2.후위 연산
후위 연산은 연산전 값이 활용 되어
아래 예시로 든 D는 아직 5라는 값을 유지하고있다가 재출력하면 6이 나오는걸 보실수있습니다 :)
//후위 연산 (i++)은 연산전 값이 활용 됩니다.
// 후위연산은 D는 아직 5라는 값을 유지하고있다가 재출력하면 6이 나옵니다.
int D = 5;
System.out.println("(D++) = " + (D++));
System.out.println("D = " + D);
//(D++) = 5
//D= 6
비교 연산자
두 개의 값을 비교하여 그 관계가 참인지 거짓인지를 판단하는 연산자입니다.
표로 간략하게 정리한것을 보여드리구 아래에 예시로 코드를 보여드릴게요:)
| 연산자 | 설명 | 예시 | 결과 |
| == | 두 값이 같으면 true | 10==10 | True |
| != | 두 값이 다르면 true | 10!=5 | True |
| > | 왼쪽 값이 크면 true | 10>5 | True |
| < | 왼쪽 값이 작으면 true | 10<5 | False |
| >= | 왼쪽 값이 크거나 같으면 true | 10>=10 | True |
| <= | 왼쪽 값이 작거나 같으면 true | 10<=5 | True |
1. 같음 연산자 ( == )
//같음연산자 (==) 같으면 true, 다르면 false
System.out.println("10 == 10: " + (10 == 10));
//10 == 10: true
System.out.println("10 == 5: " + (10 == 5));
//10 == 5: false
2. 다름 연산자 ( != )
//다름연산자 (!=) 다르면 true, 같으면 false
System.out.println("10 != 5: " + (10 != 5));
//10 != 5: true
System.out.println("10 != 5: " + (10 != 5));
//10 != 10: false
3.크기비교연산자
//크기비교연산자 (<,>,<=,>=) 양쪽에 논리에+ 맞으면 true,다르면 false
System.out.println("10 <5: " + (10<5));
// 10이 5보다 크니 콘솔결과는 false
System.out.println("10>=10: " + (10>=10));
// 조건이맞으니 true
System.out.println("10<=5: " + (10<=5));
//조건이 틀리니 false
논리 연산자
여러 개의 조건을 결합하여 참(true) 또는 거짓(false)의 결과를 도출하는 연산자입니다.
주로 if문이나 while문 같은 조건문에서 여러 조건을 동시에 평가할 때 사용됩니다.
(조건문은 다음에 포스팅후 링크 올려둘게요 😊)
표로 간략하게 정리한것을 보여드리구 아래에 예시로 코드를 보여드릴게요:)
| 연산자 | 설명 | 예시 | 결과 |
| && (AND) | 두 조건이 모두 참 일때 만 true | true && true | true |
| true && false | false | ||
| false && true | false | ||
| || (OR) | 둘 중 하나라도 참이면 true | true || true | true |
| true || false | true | ||
| false || true | true | ||
| false || false | false | ||
| ! (NOT) | 참이면 거짓, 거짓이면 참으로 변경 | !true | false |
| !false | true |
1. AND (&&) 연산자
//AND연산자 (&&)
//두 조건이 모두 참일때 true 반환합니다. 거짓이라면 false
System.out.println("true && true: " + (true&&true));
System.out.println("true && true: " + (true&& false));
int age = 20;
boolean isStudent = true; //정의값을 할당.
System.out.println("isStudent의 age는 18살 이상입니까? "+(age > 18 && isStudent));
//isStudent의 age는 18살 이상입니까? true
2. OR ( || ) 연산자
//OR 연산 (||) 두 조건중 하나라도 참이라면 true !
// 주의할점 OR(||) 연산자는 앞에가 참이면 뒤는 보지도 않는다 하는 성질이 있음
System.out.println("false||true: = " + (false|| true));
//false||true: = true
System.out.println("false||true: = " + (false|| false));
//false||true: = false
System.out.println("false||true: = " + (true|| false));
//false||true: = true
int x = 5;
int z = 10;
System.out.println("(z == 10 || x == 5) = " + (z == 10 || x == 2));
//(z == 10 || x == 5) = true
저는 OR 연산자는 숫자도 가능할까? 하는 생각이 들어 실험을 해보았는데요.
저같이 궁금해 하시는 분들이 계실까봐 참고하시라고 추가 설명도 같이 올릴게요 :)
System.out.println("z=10 || x=5: = " + (z=10|| x=2));
로 실험해봤을때 왜 안될까 하는 생각이 들더라구요.
지금 코드를 보면 z = 10처럼 =을 하나만 쓰셨는데,
이건 "10을 z에 넣어라"라는 명령이지 "10이랑 같니?"라는 질문이 아님.
에러의 직접적인 원인: = vs ==
= (대입 연산자): 변수에 값을 집어넣습니다. 결과값은 '숫자' 그 자체가 됩니다.
== (비교 연산자): 두 값이 같은지 확인합니다. 결과값은 true 아니면 false입니다.
작성하신 코드 (z = 10 || x = 2)에서 자바는 z = 10을 수행하고 그 결과인 숫자 10을 남깁니다.
아까 말씀드렸듯이 || 연산자는 ture 와 false 에 대한 값을 추출하는 연산이기때문에
숫자랑은 대화하지 않습니다.
그러므로 "bad operand types" 이라는 오류가 뜨게 됩니다.
3.NOT ( ! ) 연산자
//NOT 연산자 (!) - true -> false , false -> true
System.out.println("!true: = "+(!true));
!true: = false
System.out.println("!true: = "+(!false));
!true: = true
System.out.println("!false: = "+(!false));
!false: = true
System.out.println("!false: = "+(!true));
!false: = false
연산자 우선순위
하나의 수식에 여러 연산자가 함께 사용될 때,
어떤 연산을 먼저 처리할지 결정하는 규칙입니다. 우선순위가 높은 연산자가 먼저 실행되며,
우선순위가 같다면 왼쪽에서 오른쪽으로(일부 단항/대입 연산자 제외) 연산이 진행됩니다.
순서는
산술 > 비교 > 논리 > 대입의 순서이며, 단항 > 이항 > 삼항의 순서
이지만 ~! 단 () 괄호를 사용한다면 괄호의 우선순위가 제일 높아요 :)
예를들어 산수연산으로 보았을때 아래처럼 생각하시면 좋아요 :)
//2 + 3 * 4;
//2 + (3 * 4); 인것처럼
연산에도 순서가 있습니다.
1. 산술연산자 우선 순위
//산술연산자 우선순위
//기본적인 수학 사칙연산 우선순위가 적용됩니다
System.out.println(10 - 3 *2);
//실행순서 : 10 - (3*2)
// -> 10-6
//-> 4
2. 기본 연산자 우선 순위
//기본연산자 우선순위 (산술 >비교>논리>대입)
boolean flag = 10 + 5 > 12 && true;
System.out.println(flag);
// 실행 순서: (10 + 5) > 12 && true : 산술
// → 15 > 12 && true : 비교 15가 12보다커?라고 컴퓨터에 질문하는부분
// → true && true : 논리 크기때문에 true 이고 두 값이 같기 때문에 true
// → flag = true 그 다음 플래그에 대입
// 그러므로 true
//boolean flag = ((10 + 5) > 12) && true; 처럼 초보자에겐 가로활용추천
3. 비교 연산자 우선 순위
//비교연산자우선순위 산술 >비교>대입
System.out.println(10 - 3 > 5 + 1);
// 실행 순서: (10 - 3) > (5 + 1) : 산술
// → 7 > 6 : 비교
// → true
4.논리 연산자 우선순위
!(NOT) 가 제일 먼저 연산 됩니다. 두 번째로 &&(AND) , 마지막으로 ||(OR)
boolean result = true || false && false;
System.out.println("result = " + result);
//는 !이없기때문에 &&먼저
// 실행 순서: true || (false && false)
// → true || false
// → true
//boolean result = true || (false && false); 가 명시적으로 좋은 코딩. 이유는 ()활용했기때문에
boolean result2 = true || false && !false;
System.out.println("result2 = " + result2);
//실행순서 : !(NOT)false 는 true 바꿔주니까 true || false && true;
// true || false && true; 되었을때 &&(AND)는 두조건이 참일때 true 인데 아니므로 false
// true || false; 가 되고 (or)은 둘중 하나만 참이여도 참이니까
// ->true
//boolean result2 = true || (false && (!false)); 가 명시적으로 좋은 코딩
System.out.println(10 / 2 + 3 * 2 > 10 || false);
// 실행 순서: ((10 / 2) + (3 * 2)) > 10 || false
// → (5 + 6) > 10 || false
// → 11 > 10 || false
// → true || false
// → true
System.out.println(5 + 3 > 2 * 4 && 10 % 3 == 1);
// 실행 순서: (5 + 3) > (2 * 4) && (10 % 3) == 1
// → 8 > 8 && 1 == 1 비교연산 먼저 되니까
// → false && true
// → false
문자열 비교
문자열 비교(중요 나중에 더 디테일하게 배울예정)
//!! 실무에서는 문자열을 비교할때 ==를 사용하는 경우는 거의 없습니다.
//문자열 비교는 항상 .equals()를 사용한다.
String text = "hello";
String text2 = "Hello";
//나쁜예시
text == text2;
//좋은예시
boolean isEquals = text.equals(text2);
System.out.println("isEquals = " + isEquals);
//isEquals = false
'JAVA' 카테고리의 다른 글
| [JAVA] 반복문 (for, while, do-while) 학습 (0) | 2026.06.12 |
|---|---|
| [JAVA] 조건문 (If, If- else, Else if,switch- case) 학습 (0) | 2026.06.02 |
| [JAVA] 입력(InPut)과 출력(OutPut) 학습 (0) | 2026.05.18 |
| [JAVA] 변수(variable) 학습 (2) | 2026.05.08 |
| [JAVA] 프로젝트 관리 (0) | 2026.05.08 |