1、기본 대입 연산자 =
오른쪽 표현식의 값을 왼쪽 변수에 저장하며 기존 값을 덮어씁니다.
사용법:
변수 = 값 또는 표현식;
int age;
age = 10; // 10을 age에 대입
String name;
name= "sam"; // 문자열 대입Code language: JavaScript (javascript)
2、null 인지 대입 연산자 ??=
왼쪽 변수의 값이 null일 때만 대입을 실행합니다. 변수가 null이 아니라면 원래 값을 유지합니다.
사용법:
변수 ??= 값;
다음 코드와 동일한 기능:
if (변수 == null) {
변수 = 값;
}Code language: JavaScript (javascript)
예시:
void main() {
int? total = null;
total ??= 5;
print(total); // 5 출력, total이 null이므로 대입 적용
int? count = 100;
count ??= 200;
print(count); // 100 출력, count가 null이 아니므로 대입 무시
}Code language: PHP (php)
3、복합 대입 연산자
연산과 대입을 한 번에 처리하는 연산자
임의의 연산자 op에 대해
a op= b 는 a = a op b 와 똑같은 의미입니다
| 분류 | 연산자 | 의미 |
|---|---|---|
| 기본 사칙연산 | += | 덧셈 후 대입 |
-= | 뺄셈 후 대입 | |
*= | 곱셈 후 대입 | |
/= | 부동소수점 나눗셈 후 대입 | |
| 정수 나눗셈 | ~/= | 정수 나눗셈 후 대입 (정수 몫 반환) |
| 나머지 연산 | %= | 나머지 계산 후 대입 |
| 비트 좌측 시프트 | <<= | 좌측 시프트 후 대입 |
| 비트 우측 시프트 | >>= | 우측 시프트 후 대입 |
| 부호 없는 우측 시프트 | >>>= | 부호 없는 우측 시프트 후 대입 |
| 비트 AND | &= | 비트 AND 연산 후 대입 |
| 비트 XOR | ^= | 비트 XOR 연산 후 대입 |
| 비트 OR | |= | 비트 OR 연산 후 대입 |
| 연산자 동작 방식: | a op= b | a = a op b |
| 예시: | a += b | a = a + b |
실행 예시:
void main() {
var num = 2;
// *= 곱셈 복합 대입
num *= 3;
print(num); // 6, num = num * 3 과 동일
// += 덧셈
num += 4;
print(num); // 10, num = num + 4 와 동일
// -= 뺄셈
num -= 2;
print(num); // 8
// /= 부동소수점 나눗셈
double d = 10;
d /= 2;
print(d); // 5.0
// ~/= 정수 나눗셈
int n = 7;
n ~/= 2;
print(n); // 3
// %= 나머지 연산
int m = 9;
m %= 2;
print(m); // 1
// <<= 좌측 시프트
int bit1 = 1;
bit1 <<= 2; // 1 << 2 = 4
print(bit1); // 4
// >>= 우측 시프트
int bit2 = 8;
bit2 >>= 2; // 8 >> 2 = 2
print(bit2); // 2
// >>>= 부호 없는 우측 시프트
int bit3 = -8;
bit3 >>>= 2;
print(bit3); //4611686018427387902 매우 큰 수
// &= 비트 AND
int x = 6; // 110
x &= 3; // 011
print(x); // 010 = 2
// ^= XOR 연산
int y = 5;
y ^= 3;
print(y);
// |= 비트 OR
int z = 4;
z |= 1;
print(z); // 5
}Code language: PHP (php)
시프트 연산 설명: int bit1 = 1; 을 왼쪽으로 2비트 이동할 경우,
10진수 1 의 32비트 이진 표현:
00000000 00000000 00000000 00000001
x << n:x의모든 이진 비트를 통째로 왼쪽으로 n비트 이동시키고, 오른쪽 빈 하위 비트에는 0 을 채우며 왼쪽에서 넘친 상위 비트는 버립니다.
위 예시는 다음과 같이 변환됩니다:
00000000 00000000 00000000 00000100
이 이진수는 십진수 4에 해당합니다
논리 연산자는 뒤에서 다루겠습니다. 지금은 대입 연산자만 숙지해도 괜찮으며, 이 부분이 이번 수업의 핵심 내용입니다.
void main() {
// 1. 기본 대입 =
var a = 2;
print(a == 2);
// 2. 곱셈 복합 대입 *=
a *= 3; // a = a * 3;
print(a == 6);
// 3. 덧셈 복합 대입 +=
a += 4; // a = a + 4;
print(a == 10);
// 4. null 인지 대입 ??=
int? b; // 기본값 null
b ??= 20;
print(b == 20);
b ??= 99; // b가 null이 아니므로 수정되지 않음
print(b == 20);
// 5. 뺄셈 -=
a -= 5;
print(a == 5);
// 6. 나머지 연산 %=
a %= 3;
print(a == 2);
}Code language: Dart (dart)
위 코드 모든 출력 결과는 true입니다
Previous: Dart 타입 검사 연산자
Next: Dart 논리 연산자