
📍 개요
◾ 연산자의 우선순위와 종류를 파악하고 실무에서 자주 쓰이는 주요 내용 위주로 실습해보는 시간을 가졌습니다.
⭐ 연산의 우선순위
1) 단항, 이항, 삼항 연산자 순으로 우선순위를 가진다.
2) 산술, 비교, 논리, 대입 연산자 순으로 우선순위를 가진다.
3) 단항과 대입 연산자를 제외한 모든 연산의 방향은 왼쪽에서 오른쪽(->)이다.
4) 복잡한 연산식에는 괄호()를 사용해서 우선순위를 정해준다.
연산자
|
연산 방향
|
우선 순위
|
증감(++, --), 부호(+, -), 비트(~), 논리(!)
|
←
|
높음
|
산술(*, /, %)
|
→
|
|
산술(+, -)
|
→
|
|
쉬프트(<<, >>, >>>)
|
→
|
|
비교(<, >, <=, >=)
|
→
|
|
비교(==, !=)
|
→
|
|
논리(&)
|
→
|
|
논리(^)
|
→
|
|
논리(|)
|
→
|
|
논리(&&)
|
→
|
|
논리(||)
|
→
|
|
조건(?:)
|
→
|
|
대입(=, +=, -=, *=, /=, %=, &=, ^=, …)
|
←
|
낮음
|
1️⃣ 단항 연산자 〰️ 증감 연산자
단항 연산자 중 전치 연산자와 후치 연산자는 변수의 값을 증가시키거나 감소시키는 데 사용됩니다.
📁 전치 연산
연산식 | 설명 |
++ 피연산자 | 다른 연산을 수행하기 전, 먼저 피연산자의 값을 1 증가 시킨다. |
-- 피연산자 | 다른 연산을 수행하기 전, 먼저 피연산자의 값을 1 감소 시킨다. |
📁 후치 연산
연산식 | 설명 |
피연산자 ++ | 값을 먼저 반환 후, 피연산자의 값을 1 증가 시킨다. |
피연산자 -- | 값을 먼저 반환 후, 피연산자의 값을 1 감소 시킨다. |
🧷 예제로 증감 연산자 이해하기
public class IncreaseDecreaseOperatorExample {
public static void main(String[] args) {
int x = 10;
int y = 10;
int z;
System.out.println("----------------------");
x++; // 후치 증감 연산: x = 10 => x가 11로 증가
++x; // 전치 증감 연산: x가 11에서 12로 증가
System.out.println("x=" + x); // 출력: x=12
System.out.println("----------------------");
y--; // 후치 감소 연산: y = 10 => y가 9로 감소
--y; // 전치 감소 연산: y가 9에서 8로 감소
System.out.println("y=" + y); // 출력: y=8
System.out.println("----------------------");
z = x++; // 후치 증감 연산: z에 x 값 복사 (z=12), x는 13으로 증가
System.out.println("z=" + z); // 출력: z=12
System.out.println("x=" + x); // 출력: x=13
System.out.println("----------------------");
z = ++x; // 전치 증감 연산: x를 13에서 14로 증가시킨 후 z에 복사
System.out.println("z=" + z); // 출력: z=14
System.out.println("x=" + x); // 출력: x=14
System.out.println("----------------------");
z = ++x + y++; // 전치 증감 연산: x를 14에서 15로 증가시킨 후, y의 현재 값(8)을 더함. y는 이후 9로 증가
// 따라서 z = 15 + 8 = 23
System.out.println("z=" + z); // 출력: z=23
System.out.println("x=" + x); // 출력: x=15
System.out.println("y=" + y); // 출력: y=9
}
}
2️⃣ 이항 연산자 〰️ 비교, 논리 연산자
📁 비교 연산자
비교 연산자는 피연산자들을 비교하여
boolean 타입인 true, false를 결과값으로 가져옵니다.

💡 그렇다면 String 타입은 어떻게 비교할까요?
문자열은 대소 비교를 할 수 없고, 동등 비교는 할 수 있습니다.
그러나 아래의 예제처럼 주의해야 하는 경우가 있습니다.
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false

⭐️ 결론적으로 정리하면
String 타입에 동등 연산을 할 경우
객체의 주소 값이 같은지 다른지를 확인합니다.
👉🏻 따라서 문자열 자체를 비교하고 싶으면
‘equals()’ 메소드를 이용합시다!
📁 논리 연산자
조건식을 연결하거나 비교할 때 사용하는 연산자입니다.
▪️ AND(&&)
x && y 에서 x와 y 모두 true여야 결과값 true
✔️ true && true → true
✔️ true && false → false
✔️ false && true → false
✔️ false && false → false
▪️ OR(||)
x && y 에서 x와 y 중 하나라도 true일 경우 결과값 true
✔️ true || true → true
✔️ true || false → true
✔️ false || true → true
✔️ false || false → false
▪️ XOR(^)
x ^ y에서 x와 y가 서로 다를 때만 결과가 true입니다.
즉, 둘 다 true이거나 둘 다 false이면 결과는 false입니다.
✔️ true ^ true → false
✔️ true ^ false → true
✔️ false ^ true → true
✔️ false ^ false → false
▪️ NOT(!)
!x는 x의 값을 반전시킵니다. true이면 false로, false이면 true로 변환합니다.
✔️ !true → false
✔️ !false → true
🧷 예제로 논리 연산자 이해하기
/* 기본적인 연산 이해 */
public class Question {
public static void main(String args[]) {
int num1 = 5;
int num2 = 7;
System.out.println((num1 > 5) && (num2 > 5)); // false
System.out.println((num1 > 5) || (num2 > 5)); // true
System.out.println(!((num1 > 5) && (num2 > 5))); // true
}
}
/* 공배수 */
int solution(int number, int n, int m) {
if (number % n == 0 && number % m == 0) {
return 1;
} else {
return 0;
}
}
/* n의 배수 */
int solution(int num, int n) {
if(num%n == 0) {
return 1;
} else {
return 0;
}
}
3️⃣ 삼항 연산자 〰️ 조건 연산식

삼항 연산자는 3개의 피연산자가 있는 형태로, 간단한 조건식을 표현할 때 사용합니다.
위의 이미지를 `조건식 ? 참일 때의 값 : 거짓일 때의 값`으로 이해하면 쉬운데요.
주로 `if-else`문을 간결하게 표현하는데 사용된답니다!
🧷 예제로 삼항 연산자 이해하기
public class Example {
public static void main(String[] args) {
int num = 2;
// 기존 if-else 문
if (num % 2 == 0) {
System.out.println("짝수");
} else {
System.out.println("홀수");
}
// 삼항 연산자 사용
System.out.println(num % 2 == 0 ? "짝수" : "홀수");
}
}
❗삼항 연산자는 간결하게 표현할 수 있지만, 아래의 코드처럼 중첩되어 사용하면
가독성이 떨어져 코드의 이해가 어려워질 수 있기에 잘 활용하셔야 합니다.
public class Example {
public static void main(String[] args) {
int score = 95;
char grade = (score > 90) ? 'A' : ((score > 85) ? 'B' : 'C');
System.out.println("당신의 학점은 : " + grade);
}
}
📝 오늘의 부트캠프 회고
1️⃣ 잘했던 점
기본적인 연산자에 대한 다양한 예제를 통해 어떻게 동작하는지 파악하고,
연산자가 실제 코드에서 어떻게 사용되는지에 대한 감을 잡을 수 있었습니다.
예를 들어, 증감 연산자와 논리 연산자의 활용을 통해 이해도를 높일 수 있었습니다.
2️⃣ 부족했던 점
금일 학습 내용은 이론보다는 직접 코드를 작성해보고
여러 예제를 풀어야 이해가 되는 내용이 많아서 설명이 다소 부족했던 부분이 있었습니다.
3️⃣ 향후 개선 방향
연산자와 관련된 다양한 실습 문제로 실력을 더 확실히 다질 수 있도록 하겠습니다.
특히, 관련된 코딩 테스트 문제를 통해 연산자의 실제 사용 사례를 연습하면 좋을 것 같다고 생각했습니다.
📖 연산자 코딩 테스트 문제
'☕ JAVA' 카테고리의 다른 글
[📖JAVA] 자바 멤버 변수 선언과 외부 접근 방법(➰클래스 변수, 인스턴스 변수) (0) | 2024.09.05 |
---|---|
[🥸JAVA] 자바 조건문(if, switch)과 반복문(for, while) 정리 (0) | 2024.09.04 |
[🥸JAVA] 자바 자동/강제 타입 변환, 문자열 숫자 변환(➰parseInt, valueOf 메서드) (2) | 2024.09.02 |
[🥸JAVA] 자바 기본 타입 변수와 참조 변수 메모리 영역 차이(➰Heap, Stack) (2) | 2024.09.02 |
[🥸JAVA] 자바 변수 선언과 데이터 타입(➰오버플로우, 리터럴 접미사) (0) | 2024.08.30 |