📌 Java Study
🔸 2022-07-28 목요일
[Java 기초]
1. 연산자(대입, 부호, 산술, 복합대입, 증감)
- 항(Operand) : 연산에 사용되는 값
- 연산자(Operator) : 항을 이용하여 연산하는 기호
연산자 |
설명 |
연산 예 |
단항 연산자 |
항이 한 개 연산자 |
++num |
이항 연산자 |
항이 두 개 연산자 |
num1 + num2; |
삼항 연산자 |
항이 세 개 연산자 |
(5 > 3) ? 1 : 0; |
- 대입 연산자 : 왼쪽 변수의 값이 오른쪽에 대입(우선 순위 가장 낮음)
int age = 20;
- 단항 연산자 : 변수의 부호를 유지 하거나(+) 바꿈(-)
- 실제 변수 값이 변하려면 대입 연산자를 사용해야 함
- 산술 연산자
연산자 |
기능 |
연산 예 |
+ |
두 항을 더합니다. |
5 + 3 |
- |
앞에 있는 항에서 뒤에 있는 항을 뺍니다. |
5 - 3 |
* |
두 항을 곱합니다. |
5 * 3 |
/ |
앞에 있는 항에서 뒤에 있는 항을 나누어 몫을 구합니다. |
5 / 3 |
% |
앞에 있는 항에서 뒤에 있는 항을 나누어 나머지를 구합니다. |
5 % 3 |
- 복합 대입 연산자 : 대입 연산자와 다른 연산자가 함께 쓰임
연산자 |
기능 |
연산 예 |
+= |
두 항의 값을 더해서 왼쪽 항에 대입합니다. |
num1 += 2; |
-= |
왼쪽 항에서 오른쪽 항을 빼서 그 값을 왼쪽 항에 대입합니다. |
num1 -= 2; |
*= |
두 항의 값을 곱해서 왼쪽 항에 대입합니다. |
num1 *= 2; |
/= |
왼쪽 항을 오른쪽 항으로 나누어 그 몫을 왼쪽 항에 대입합니다. |
num1 /= 2; |
%= |
왼쪽 항을 오른쪽 항으로 나누어 그 나머지를 왼쪽 항에 대입합니다. |
num1 %= 2; |
연산자 |
기능 |
연산 예 |
<<= |
비트를 왼쪽으로 이동하고 그 값을 왼쪽 항에 대입합니다. |
num1 <<= 2; |
>>= |
비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입합니다. |
num1 >>= 2; |
>>>= |
비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입합니다. |
num1 >>>= 2; |
&= |
두 항의 & 비트 연산 후 그 값을 왼쪽 항에 대입합니다. |
num1 &= num2; |
ㅣ= |
두 항의 ㅣ 비트 연산 후 그 값을 왼쪽 항에 대입합니다. |
num1 ㅣ= num2; |
^= |
두 항의 ^ 비트 연산 후 그 값을 왼쪽 항에 대입합니다. |
num1 ^= num2; |
- 증가, 감소 연산자 : 변수의 값을 1 더하거나 뺄 때 사용
연산자 |
기능 |
연산 예 |
++ |
항의 값에 1을 더합니다. |
val = ++num or num++; |
-- |
항의 값에서 1을 뺍니다. |
val = --num or num--; |
2. 연산자(관계, 논리, 조건, 비트)
- 관계 연산자 : 연산의 결과가 true / false 로 반환됨(= 비교 연산자)
연산자 |
기능 |
연산 예 |
> |
왼쪽 항이 크면 참을, 아니면 거짓을 반환합니다. |
num > 3; |
< |
왼쪽 항이 작으면 참, 아니면 거짓을 반환합니다. |
num < 3; |
>= |
왼쪽 항이 오른쪽 항보다 크거나 같으면 참, 아니면 거짓을 반환합니다. |
num >= 3; |
<= |
왼쪽 항이 오른쪽 항보다 작거나 같으면 참, 아니면 거짓을 반환합니다. |
num <= 3; |
== |
두 개 항의 값이 다르면 참, 아니면 거짓을 반환합니다. |
num == 3; |
!= |
두 개 항이 다르면 참, 아니면 거짓을 반환합니다. |
num != 3; |
- 논리 연산자 : 관계 연산자와 함께 많이 사용됨, 연산의 결과가 true / false 로 반환됨
연산자 |
기능 |
연산 예 |
&&(논리 곱) |
두 항이 모두 참인 경우에만 결과 값이 참입니다. 아니면 거짓입니다. |
booleanval = (5>3) && (5>2); |
ㅣㅣ(논리 합) |
두 항 중 하나의 항만 참이면 결과는 참입니다. 모두 거짓이면 결과는 거짓입니다. |
booleanval = (5>3) ㅣㅣ (5>2); |
!(부정) |
단항 연산자입니다. 참의 경우는 거짓으로, 거짓인 경우는 참으로 바꿉니다. |
val = booleanval = !(5>3); |
- 단락 회로 평가
- 논리 곱(&&)은 두 항이 모두 true 일 때만 결과가 true
- 앞의 항이 false 이면 뒤 항의 결과를 평가하지 않아도 false 임
- 논리 합(ㅣㅣ)은 두 항이 모두 false 일 때만 결과가 false
- 앞의 항이 true 이면 뒤 항의 결과를 평각하지 않아도 true 임
- 삼항 연산자 : 해당 조건식이 참이면 결과1, 거짓이면 결과2 반환
조건식 ? 결과1 : 결과2;
int num = (5 > 3) ? 10 : 20;
// 10
연산자 |
설명 |
예 |
~ |
비트의 반전(1의 보수) |
a = ~a; |
& |
비트 단위 AND |
1 & 1, 1 반환 그 외는 0 |
ㅣ |
비트 단위 OR |
0 ㅣ 0, 0 반환 그 외는 1 |
^ |
비트 단위 XOR |
두 개의 비트가 서로 다른 경우에 1을 반환 |
<< |
왼쪽 shift |
a << 2 변수 a를 2비트 만큼 왼쪽으로 이동 |
>> |
오른쪽 shift |
a >> 2 변수 a를 2비트 만큼 오른쪽으로 이동 |
>>> |
오른쪽 shift |
>> 동일한 연산, 채워지는 비트가 부호와 상관 없이 0 |
- 마스크 : 특정 비트를 가리고 몇 개의 비트 값만 사용할 때
- 비트 켜기 : 특정 비트들만을 1로 설정해서 사용하고 싶을 때 (&00001111, 하위 4비트 중 1인 비트만 꺼내기)
- 비트 끄기 : 특정 비트들만을 0으로 설정해서 사용하고 싶을 때 (&11110000, 하위 4비트 중 0인 비트만 꺼내기)
- 비트 토글 : 모든 비트들을 0은 1로, 1은 0으로 바꾸고 싶을 때
if(조건식) {
수행문;
}
if(조건식) {
수행문 1;
} else {
수행문 2;
}
- switch-case 문 : 조건이 정수, 문자열 값으로 그 값에 따라 수행 결과가 달라지는 경우, if-else if - else와 같은 의미로 수행
if (rank == 1) {
medalColor = 'G';
}
else if(rank == 2) {
medalColor = 'S';
}
else if(rank == 3) {
medalColor = 'B';
}
else {
medalColor = 'A';
}
switch(rank) {
case 1 : medalColor = 'G';
break;
case 2 : medalColor = 'S';
break;
case 3 : medalColor = 'B';
break;
default : medalColor = 'A';
}
switch(medal) {
case "Gold" :
System.out.println("금메달");
break;
case "Silver" :
System.out.println("은메달");
break;
case "Bronze" :
System.out.println("동메달");
break;
default :
System.out.println("메달이 없습니다.");
}
- 아래 예제 처럼 수행문이 동일한 경우 다른 케이스를 묶어서 코드 작성 가능
switch (month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
day = 31;
break;
case 2:
day = 28;
break;
case 4: case 6: case 11:
day = 30;
break;
default:
System.out.println("Error");
day = 0;
}
- 제어문(반복문) : 동일한 수행문을 조건에 맞는 동안 수행하도록 하는 기능
- while 문 : 조건이 참인 동안 수행문이 반복해서 수행됨
- do-while 문 : 먼저 수행문을 수행하고 조건 체크, 한 번 이상 수행문이 수행되어야 하는 경우 사용
- 둘의 차이를 쉽게 말해서 while 문은 조건이 맞아야 수행, do-while 문은 수행문을 일단 수행하고, 조건을 뒤에서 체크
- 제어문(for 문) : 반복문 중 가장 많이 사용됨, 일정 횟수에 기반한 반복을 구현할 때 효율적
for (초기화식; 조건식; 증감식)
{
수행문;
}
int count = 1;
int sum = 0;
for(int i = 0; i < 10; i++, count++) { // 10 번
sum += count;
}
반복문 |
수행 |
쓰임 |
while 문 |
조건이 참인 동안 반복 수행, 맞지 않으면 수행 x |
조건식 결과나 변수가 true, false 값인 경우 주로 사용 |
do-while 문 |
조건이 참인 동안 반복 수행 수행, 수행문 먼저 수행 후 조건 체크 |
조건식 결과나 변수가 true, false 값인 경우 주로 사용 |
for 문 |
초기화, 조건체크, 증감 순으로 수행 |
특정 수의 범위, 횟수와 관련하여 반복되는 경우 주로 사용, 배열과 함께 많이 사용 |
- 중첩 반복문 : 반복문이 중첩되어 구현되는 경우
- 반복문 내부에 또 다른 반복문이 있음, 외부 및 내부 반복문 간의 변수 값 변화에 유의하며 구현해야 함
- 제어문(break문, continue 문)
- break 문 : 감싸고 있는 블록의 제어를 빠져나오는 기능
- 반복문, 조건문, switch-case 등과 같이 쓰이며 현재 수행하고 있던 블록에서 수행을 중지하고 외부로 제어가 이동
- 반복문과 같이 사용하면 특정 조건일 때 반복을 중지하는 기능을 구현 가능
- continue 문 : 반복의 수행 중 조건문과 조건이 맞는 경우 이후 블록 내부의 다른 수행문을 수행하지 않음
🔖 Eclipse 실습