반응형
1. 연산자와 연산식
- 연산자(operator): 연산에 사용되는 표시나 기호
- 피연산자(operand): 연산자와 함께 연산되는 데이터
- 연산식(expression): 연산자와 피연산자로 연산 과정을 기술한 것
1) 단항 연산자(피연산자가 단 하나뿐인 연산자)
(1) 부호 연산자(양수와 음수를 표시하는 +, -): char을 제외한 나머지 기본 타입에 사용 가능
| 연산식 예시 | 설명 |
| + 피연산자 | 피연산자의 부호 유지 |
| - 피연산자 | 피연산자의 부호 변경 |
(2) 증감 연산자(++, --): 변수의 값을 증가하거나 감소하게 하며, boolean을 제외한 모든 기본 타입에 사용 가능
- ++i와 i+1의 연산 속도에 차이는 없음
| 연산식 예시 | 설명 |
| ++ 피연산자 | 다른 연산 수행 전, 피연산자 값을 1 증가시킴 |
| -- 피연산자 | 다른 연산 수행 전, 피연산자 값을 1 감소시킴 |
| ++ 피연산자 | 다른 연산 수행 후, 피연산자 값을 1 증가시킴 |
| -- 피연산자 | 다른 연산 수행 후, 피연산자 값을 1 감소시킴 |
(3) 논리 부정 연산자
| 연산식 예시 | 설명 |
| ! 피연산자 | 피연산자가 true면 false 값을 산출하고, 피연산자가 false면 true 값을 산출 |
2) 이항 연산자(피연산자가 2개인 연산자)
(1) 산술 연산자(+, -, *, /, %): boolean을 제외한 모든 타입에 사용 가능
| 연산식 예시 | 설명 |
| 피연산자1 + 피연산자2 | 덧셈 연산 |
| 피연산자1 - 피연산자2 | 뺄셈 연산 |
| 피연산자1 * 피연산자2 | 곱셈 연산 |
| 피연산자1 / 피연산자2 | 피연산자1을 피연산자2로 나누는 연산 |
| 피연산자1 % 피연산자2 | 피연산자1을 피연산자2로 나눈 나머지를 구하는 연산 |
(2) 문자열 결합 연산자(+): 피연산자 중 한쪽이 문자열이면 +연산자는 문자열 결합 연산자로 사용
String str1 = "JDK" + 11.0;
System.out.println(str1); // "JDK11.0" 출력
System.out.println(5 + 12.0 + "JDK"); // "17.0JDK" 출력
(3) 비교 연산자(<, <=, >, >=, ==, !=): 피연산자의 크기 또는 동등을 비교하여 true/false를 산출
| 구분 | 연산식 예시 | 설명 |
| 동등 비교 | 피연산자1 == 피연산자2 | 두 피연산자의 값이 같은지 비교 |
| 피연산자1 != 피연산자2 | 두 피연산자의 값이 다른지 비교 | |
| 크기 비교 | 피연산자1 > 피연산자2 | 피연산자1이 2보다 큰지 비교 |
| 피연산자1 >= 피연산자2 | 피연산자1이 2보다 크거나 같은지 비교 | |
| 피연산자1 < 피연산자2 | 피연산자1이 2보다 작은지 비교 | |
| 피연산자1 <= 피연산자2 | 피연산자1이 2보다 작거나 같은지 비교 |
(4) 논리 연산자(&&, ||, &, |, ^, !): 피연산자는 boolean만 사용 가능
| 구분 | 설명 | 연산식 예시 | 결과 |
| AND(논리곱) | 피연산자 모두가 true일때만 연산 결과가 true | true && 또는 & true | true |
| true && 또는 & false | false | ||
| false && 또는 & true | false | ||
| false && 또는 & false | false | ||
| OR(논리합) | 피연산자 중 하나만 true이면 연산 결과는 true | true || 또는 | true | true |
| true || 또는 | false | true | ||
| false || 또는 | true | true | ||
| false || 또는 | false | false | ||
| XOR(배타적 논리합) | 피연산자가 하나는 true이고 다른 하나가 false일 경우에만 연산 결과가 true | true ^ true | false |
| true ^ false | true | ||
| false ^ true | true | ||
| false ^ false | false | ||
| NOT(논리 부정) | 피연산자의 논리값을 바꿈 | !true | false |
| !false | true |
(5) 대입 연산자(=, +=, -=, *=, /=, %=): 모든 연산자 중 가장 낮은 연산 순위로, 연산 진행 방향은 오른쪽에서 왼쪽
| 구분 | 연산식 예시 | 설명 |
| 단순 대입 연산자 | 변수 = 피연산자 | 피연산자 값을 변수에 저장 |
| 복합 대입 연산자 | 변수 += 피연산자 | 변수=변수+피연산자 |
| 변수 -= 피연산자 | 변수=변수-피연산자 | |
| 변수 *= 피연산자 | 변수=변수*피연산자 | |
| 변수 /= 피연산자 | 변수=변수/피연산자 | |
| 변수 %= 피연산자 | 변수=변수%피연산자 | |
| 변수 &= 피연산자 | 변수=변수&피연산자 | |
| 변수 |= 피연산자 | 변수=변수|피연산자 | |
| 변수 ^= 피연산자 | 변수=변수^피연산자 |
3) 삼항 연산자(?:): 3개의 피연산자를 필요로 하는 연산자
- 조건식(피연산자1) ? 값 또는 연산식(피연산자2) : 값 또는 연산식(피연산자 3)
-> 조건식이 참이면 피연산자2를, 조건식이 거짓이면 피연산자3을 반환
// 삼항연산자를 이중으로 사용: 실제로는 이렇게까지 쓰지 않음
int score = 95;
char grade = (score >= 90) ? 'A' : ((score>=80) ? 'B' : 'C');
System.out.println(grade); // 'A' 출력

*연산의 방향과 우선순위
- 수학과 같이, 덧셈 뺄셈보다 곱셈 나눗셈 연산자가 우선 처리됨
- 단항/부호/대입 연산자는 오른쪽 방향에서 왼쪽 방향으로 연산 수행
사용예시1: 자바 컴파일러 사이트(https://www.mycompiler.io/ko/new/java)
- --b (전위 감소 연산) → b = 9
- c += a (c = c + a) → c = 25
- b * c (곱셈) → 9 * 25 = 225
- 225 / 5 (나눗셈) → 45
- 45 % 3 (나머지 연산) → 0
- a + 0 (덧셈) → 5
- 5 - 9 (뺄셈) → -4
- -4 + 25 (덧셈) → 21

사용예시2: 자바 컴파일러 사이트(https://www.mycompiler.io/ko/new/java)
- -z (전위 감소 연산) → z = 4
- y % x (나머지 연산) → 3 % 8 = 3
- --z / (y % x) (나눗셈) → 4 / 3 = 1 (int 타입이므로 소수점 이하 버림)
- x * y (곱셈) → 8 * 3 = 24
- x * y + --z / (y % x) (덧셈) → 24 + 1 = 25
- (x * y + --z / (y % x)) << 2 (비트 시프트 연산) → 25 << 2 = 100
- z += y (z = z + y) → z = 7
- (z += y) & x (비트 AND 연산) → 7 & 8 = 0
- (x * y + --z / (y % x)) << 2 | (z += y) & x (비트 OR 연산) → 100 | 0 = 100

2. 조건문
1) if문
- 조건식의 결과에 따라 블록 실행 여부를 결정
- 조건식 블록에는 true 또는 false를 산출 가능한 연산식, boolean 타입 변수가 올 수 있음
if ( 조건식 ) {
// 조건식이 true
실행문A
}
// 조건식이 false
실행문B
2) if-else문
- if문이 조건식이 true면 if문 블록이 실행되고, false면 else 블록 실힝]
if ( 조건식 ) {
// 조건식이 true
실행문A
} else {
// 조건식이 false
실행문B
}
3) if-else if-else문
- 조건식이 여러 개인 if문
if( 조건식1 ) {
// 조건식1이 true
실행문A
} else if( 조건식2 ) {
// 조건식1이 false, 조건식2가 true
실행문B
} else {
// 조건식 1, 2가 false
실행문C
}
실행문D

4) switch문
- 변수가 어떤 값을 갖느냐에 따라 실행문이 선택됨
switch( 변수 ) {
case 값1:
/* 변수가 값1일 경우 */
실행문A;
break;
case 값2:
/* 변수가 값2일 경우 */
실행문B;
break;
case 값3:
/* 변수가 값3일 경우 */
실행문C;
break;
default:
/* 변수가 값1, 값2, 값3이 아닐 경우 */
실행문D;
break;
}


반응형
'자바(JAVA) > 미니 프로젝트 & 기초 공부' 카테고리의 다른 글
| Java 기초 또 다시 공부하기 6일차 - 참조 타입과 참조 변수 (0) | 2025.05.28 |
|---|---|
| Java 기초 또 다시 공부하기 5일차 - 반복문(for문, while/do-while문, break/continue) (0) | 2025.05.23 |
| Java 기초 또 다시 공부하기 3일차 - 변수 타입 변환, 변수와 시스템 입출력 (1) | 2025.05.20 |
| Java 기초 또 다시 공부하기 2일차 - 변수, 기본 타입 (0) | 2025.05.19 |
| Java 기초 또 다시 공부하기 1일차 - 자바 특징, 자바 개발 환경 구축, 자바 프로그램 개발 과정 (0) | 2025.05.16 |