자바의 대입 연산자(Assignment Operators)는 변수에 값을 할당하거나 특정 연산을 수행한 후 그 결과를 다시 변수에 저장하는 데 사용됩니다. 대입 연산자는 코드에서 매우 자주 사용되며, 여러 유형이 있습니다. 가장 기본적인 대입 연산자는 =
이지만, 자바는 이를 확장한 다양한 복합 대입 연산자도 제공합니다.
1. 기본 대입 연산자 (=
)
가장 기본적인 대입 연산자는 =
이며, 변수에 값을 할당하는 데 사용됩니다. 이 연산자는 오른쪽의 값을 왼쪽의 변수에 저장합니다.
예시:
public class BasicAssignmentExample {
public static void main(String[] args) {
int x = 10; // x에 10을 할당
String message = "Hello, World!"; // message에 문자열을 할당
System.out.println("x: " + x); // 출력: x: 10
System.out.println("message: " + message); // 출력: message: Hello, World!
}
}
위의 예시에서 =
연산자는 10
을 변수 x
에, "Hello, World!"
를 변수 message
에 할당합니다.
2. 복합 대입 연산자 (Compound Assignment Operators)
복합 대입 연산자는 대입 연산자와 다른 연산자(산술 연산자, 비트 연산자 등)를 결합한 형태로, 변수에 대한 연산과 대입을 한 번에 수행합니다. 이를 통해 코드가 더욱 간결해질 수 있습니다.
- 덧셈 후 대입 (
+=
) - 뺄셈 후 대입 (
-=
) - 곱셈 후 대입 (
*=
) - 나눗셈 후 대입 (
/=
) - 나머지 후 대입 (
%=
) - 비트 AND 후 대입 (
&=
) - 비트 OR 후 대입 (
|=
) - 비트 XOR 후 대입 (
^=
) - 왼쪽 시프트 후 대입 (
<<=
) - 오른쪽 시프트 후 대입 (
>>=
) - 부호 없는 오른쪽 시프트 후 대입 (
>>>=
)
각 복합 대입 연산자의 동작을 예제로 살펴보겠습니다.
1. 덧셈 후 대입 (+=
)
public class AdditionAssignmentExample {
public static void main(String[] args) {
int a = 5;
a += 3; // a = a + 3
System.out.println("a: " + a); // 출력: a: 8
}
}
위의 예시에서 a += 3
은 a = a + 3
과 동일한 역할을 합니다.
2. 뺄셈 후 대입 (-=
)
public class SubtractionAssignmentExample {
public static void main(String[] args) {
int b = 10;
b -= 4; // b = b - 4
System.out.println("b: " + b); // 출력: b: 6
}
}
위의 예시에서 b -= 4
는 b = b - 4
와 동일한 역할을 합니다.
3. 곱셈 후 대입 (*=
)
public class MultiplicationAssignmentExample {
public static void main(String[] args) {
int c = 7;
c *= 2; // c = c * 2
System.out.println("c: " + c); // 출력: c: 14
}
}
위의 예시에서 c *= 2
는 c = c * 2
와 동일한 역할을 합니다.
4. 나눗셈 후 대입 (/=
)
public class DivisionAssignmentExample {
public static void main(String[] args) {
int d = 20;
d /= 5; // d = d / 5
System.out.println("d: " + d); // 출력: d: 4
}
}
위의 예시에서 d /= 5
는 d = d / 5
와 동일한 역할을 합니다.
5. 나머지 후 대입 (%=
)
public class ModulusAssignmentExample {
public static void main(String[] args) {
int e = 25;
e %= 4; // e = e % 4
System.out.println("e: " + e); // 출력: e: 1
}
}
위의 예시에서 e %= 4
는 e = e % 4
와 동일한 역할을 합니다.
6. 비트 AND 후 대입 (&=
)
public class BitwiseAndAssignmentExample {
public static void main(String[] args) {
int f = 12; // 1100 in binary
f &= 5; // 0101 in binary, f = f & 5
System.out.println("f: " + f); // 출력: f: 4 (0100 in binary)
}
}
위의 예시에서 f &= 5
는 f = f & 5
와 동일한 역할을 하며, 비트 수준에서 AND 연산을 수행합니다.
7. 비트 OR 후 대입 (|=
)
public class BitwiseOrAssignmentExample {
public static void main(String[] args) {
int g = 9; // 1001 in binary
g |= 3; // 0011 in binary, g = g | 3
System.out.println("g: " + g); // 출력: g: 11 (1011 in binary)
}
}
위의 예시에서 g |= 3
는 g = g | 3
과 동일한 역할을 하며, 비트 수준에서 OR 연산을 수행합니다.
8. 비트 XOR 후 대입 (^=
)
public class BitwiseXorAssignmentExample {
public static void main(String[] args) {
int h = 6; // 0110 in binary
h ^= 3; // 0011 in binary, h = h ^ 3
System.out.println("h: " + h); // 출력: h: 5 (0101 in binary)
}
}
위의 예시에서 h ^= 3
는 h = h ^ 3
과 동일한 역할을 하며, 비트 수준에서 XOR 연산을 수행합니다.
9. 왼쪽 시프트 후 대입 (<<=
)
public class LeftShiftAssignmentExample {
public static void main(String[] args) {
int i = 4; // 0100 in binary
i <<= 2; // i = i << 2
System.out.println("i: " + i); // 출력: i: 16 (10000 in binary)
}
}
위의 예시에서 i <<= 2
는 i = i << 2
와 동일한 역할을 하며, 비트를 왼쪽으로 두 번 이동시킵니다.
10. 오른쪽 시프트 후 대입 (>>=
)
public class RightShiftAssignmentExample {
public static void main(String[] args) {
int j = 16; // 10000 in binary
j >>= 2; // j = j >> 2
System.out.println("j: " + j); // 출력: j: 4 (0100 in binary)
}
}
위의 예시에서 j >>= 2
는 j = j >> 2
와 동일한 역할을 하며, 비트를 오른쪽으로 두 번 이동시킵니다.
11. 부호 없는 오른쪽 시프트 후 대입 (>>>=
)
public class UnsignedRightShiftAssignmentExample {
public static void main(String[] args) {
int k = -16; // 11111111 11111111 11111111 11110000 in binary
k >>>= 2; // k = k >>> 2
System.out.println("k: " + k); // 출력: k: 1073741820 (00111111 11111111 11111111 11111100 in binary)
}
}
위의 예시에서 k >>>= 2
는 k = k >>> 2
와 동일한 역할을 하며, 부호를 무시하고 비트를 오른쪽으로 두 번 이동시킵니다.
3. 대입 연산자의 사용 예
다양한 대입 연산자를 사용하는 예제를 보겠습니다:
public class AssignmentOperatorsDemo {
public static void main(String[] args) {
int a = 5;
a += 2; // a = a + 2
System.out.println("a += 2: " + a); // 7
int b = 10;
b -= 3; // b = b - 3
System.out.println("b -= 3: " + b); // 7
int c = 4;
c *= 3; // c = c * 3
System.out.println("c *= 3: " + c); // 12
int d = 20;
d /= 4; // d = d / 4
System.out.println("d /= 4: " + d); // 5
int e = 15;
e %= 4; // e = e % 4
System.out.println("e %= 4: " + e); // 3
int f = 8;
f &= 3; // f = f & 3
System.out.println("f &= 3: " + f); // 0
int g = 9;
g |= 2; // g = g | 2
System.out.println("g |= 2: " + g); // 11
int h = 5;
h ^= 3; // h = h ^ 3
System.out.println("h ^= 3: " + h); // 6
int i = 7;
i <<= 2; // i = i << 2
System.out.println("i <<= 2: " + i); // 28
int j = 16;
j >>= 2; // j = j >> 2
System.out.println("j >>= 2: " + j); // 4
int k = -16;
k >>>= 2; // k = k >>> 2
System.out.println("k >>>= 2: " + k); // 1073741820
}
}
이 예제는 다양한 복합 대입 연산자를 사용하여 값에 대해 연산을 수행하고, 그 결과를 다시 변수에 저장하는 방법을 보여줍니다.
자바의 대입 연산자는 변수에 값을 할당하거나, 특정 연산을 간결하게 표현할 때 매우 유용합니다. 이를 효과적으로 활용하면 코드를 더 간단하고 명확하게 작성할 수 있습니다.
'언어 > Java' 카테고리의 다른 글
[ Java ] List 복사하기 (0) | 2024.06.13 |
---|---|
[ Java ] List 사용하기 (1) | 2024.06.13 |
[ Java ] 삼항 연산자 사용해보기 (0) | 2024.06.09 |
[ Java ] 논리 연산자 사용하기 (0) | 2024.06.09 |
[ Java ] 비교 연산자 사용하기 (0) | 2024.06.09 |