(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

break문과 continue문은 반복문 등에서 분기를 하기 위해 사용한다.

 

■ break문

- for, while, do-while문과 같은 반복문의 루프를 실행하다가 break문을 만나면, 반복문의 루프를 빠져나간다.

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Main {
    public static void main(String[] args) {
        int i = 1;
        
        while(true) {
            System.out.println("i : " + i);
            if(i == 10break;
            ++i;
        }
        
        System.out.println("종료!");
    }
}
cs

Line 3 : 정수형 변수 i 선언 후 1로 초기화

Line 5 : 무한 루프

Line 6 : i값 출력

Line 7 : i가 10인 경우 while문을 빠져나와 Line 10으로 이동

Line 8 : i값 1 증가

 

■ continue문

- for, while, do-while문과 같은 반복문의 루프를 실행하다가 continue문을 만나면, 그 아래의 문장들을 실행하지 않고 루프의 조건 체크 부분으로 이동한다.

1
2
3
4
5
6
7
8
9
10
public class Main {
    public static void main(String[] args) {
        for(int i = 1; i <= 10++i) {
            if(i % 2 == 0continue;
            System.out.println("i : " + i);
        }
        
        System.out.println("종료!");
    }
}
cs

Line 3 : i가 1부터 1씩 증가하면서, 10보다 작거나 같을 때까지 반복

Line 4 : i를 2로 나눈 나머지가 0인경우(짝수인 경우) 조건 체크 부분으로 이동

Line 5 : i값 출력

'Java' 카테고리의 다른 글

자바(Java) 클래스(Class)와 인스턴스(Instance)  (0) 2020.06.30
자바(Java) 객체 지향 프로그래밍(OOP)  (0) 2020.06.30
자바(Java) for문  (0) 2020.06.26
자바(Java) do-while문  (0) 2020.06.26
자바(Java) while문  (0) 2020.06.26

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

초기식, 조건식, 증감식 모두를 기본적으로 포함하고 있고, 가장 많이 사용되는 반복문이다. 반복 과정은 while문과 같다.

 

(자바(Java) while문 : https://devmoomin.tistory.com/60)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        int total = 1, num;
        System.out.print("num의 값 입력 : ");
        num = keyboard.nextInt();
        
        for(int i = 1; i <= num; ++i) {
            total *= i;
        }
        
        System.out.println(num + "! = " + total);
    }
}
cs

Line 6 : 정수형 변수 total, num 선언 후 total을 1로 초기화

Line 8 : num에 값을 입력 받음

Line 10 : i가 1부터 1씩 증가하면서, num보다 작거나 같은 동안 반복 (num회 반복)

Line 11 : total에 i의 값을 누적해서 곱해줌

Line 14 : 결과값 출력

 

■ for문 무한루프

- for문은 조건을 만족하는 동안 계속해서 반복 실행되는데, 만약 조건문을 계속해서 만족하게 된다면 for문을 빠져나오지 못하고 계속 실행하는 무한 루프에 빠지게 된다.

1
2
3
4
5
6
7
public class Main {
    public static void main(String[] args) {
        for(int i = 1; i > 0++i) {
            System.out.println("i = " + i);
        }
    }
}
cs

Line 3 : i가 1부터 1씩 증가하면서, 0보다 큰 동안 반복

※ i의 값은 무조건 0보다 크므로 무한 루프에 빠지게 된다.

 

■ for문 중첩

- for문 안에 for문을 포함시킨 것으로, 반복 구조 내에서 또 다른 반복 구조가 형성된다.

1
2
3
4
5
6
7
8
9
10
11
public class Main {
    public static void main(String[] args) {
        for(int i = 1; i <= 3++i) {
            System.out.println("[i = " + i + "일 때]");
            
            for(int j = 1; j <= 2++j) {
                System.out.println("j = " + j);
            }
        }
    }
}
cs

Line 3 : i가 1부터 1씩 증가하면서, 3보다 작거나 같은 동안 반복

Line 4 : i의 값 출력

Line 6 : j가 1부터 1씩 증가하면서, 2보다 작거나 같은 동안 반복

Line 7 : j의 값 출력

i j
1 1
1 2
2 1
2 2
3 1
3 2

'Java' 카테고리의 다른 글

자바(Java) 객체 지향 프로그래밍(OOP)  (0) 2020.06.30
자바(Java) break, continue문  (0) 2020.06.26
자바(Java) do-while문  (0) 2020.06.26
자바(Java) while문  (0) 2020.06.26
자바(Java) switch-case문  (0) 2020.06.25

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

while문은 조건을 만족하는 경우에만 실행하기 때문에, 조건을 만족하지 않는 경우 한 번도 실행이 되지 않을 수 있다. 하지만 do-while문은 무조건 한 번은 실행하고, 조건 비교를 통해 만족하는 경우 반복 실행한다.

 

(자바(Java) while문 : https://devmoomin.tistory.com/60)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        int num = 1, temp;
        
        do {
            System.out.println((num+++ "번째 반복");
            System.out.print("계속하려면 1, 종료하려면 0 입력 : ");
            temp = keyboard.nextInt();
        } while(temp != 0);
        
        System.out.println("종료!");
    }
}
cs

Line 6 : 정수형 변수 num, temp 선언 후 num을 1로 초기화

Line 8 : 조건에 상관없이 블록 안의 내용 실행

Line 9 : 반복 횟수 출력

Line 11 : temp에 값을 입력받음

Line 12 : 조건 비교 (temp가 0이면 종료, 0이 아니면 반복)

'Java' 카테고리의 다른 글

자바(Java) break, continue문  (0) 2020.06.26
자바(Java) for문  (0) 2020.06.26
자바(Java) while문  (0) 2020.06.26
자바(Java) switch-case문  (0) 2020.06.25
자바(Java) if문 (if, if-else, if-else if-else)  (0) 2020.06.25

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

while문은 반복을 위한 문장으로, 조건을 만족하는 동안 블록 안의 내용을 계속 반복 실행하고, 조건을 만족하지 않는 경우 해당 블록을 빠져나온다. 반드시 블록 안의 조건식의 결과값을 변화시키는 문장이 필요하며, 조건이 잘못 처리될 경우 무한 루프에 빠질 수 있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Main {
    public static void main(String[] args) {
        int num = 1;
        
        System.out.println("[1부터 10까지 정수 출력]");
        
        while(num <= 10) {
            System.out.println(num++);
        }
        
        System.out.println("종료!");
    }
}
cs

Line 3 : 정수형 변수 num 선언 후 1로 초기화

Line 5 : 문자열 출력

Line 7 : num이 10보다 작거나 같은 동안 블록 안의 내용 반복

Line 8 : num의 값 출력 후 num을 1 증가

Line 11 : 문자열 출력

 

■ while문 무한 루프

- while문은 조건을 만족하는 동안 계속해서 반복 실행되는데, 만약 조건문을 계속해서 만족하게 된다면 while문을 빠져나오지 못하고 계속 실행하는 무한 루프에 빠지게 된다.

1
2
3
4
5
6
7
8
9
public class Main {
    public static void main(String[] args) {
        int num = 1;
        
        while(num > 0) {
            System.out.println(num++);
        }
    }
}
cs

Line 3 : 정수형 변수 num 선언 후 1로 초기화

Line 5 : num이 0보다 큰 동안 블록 안의 내용 반복

Line 6 : num의 값 출력 후 num을 1 증가

※ num의 값은 무조건 0보다 크므로 무한 루프에 빠지게 된다.

 

■ while문 중첩

- while문 안에 while문을 포함시킨 것으로, 반복 구조 내에서 또 다른 반복 구조가 형성된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Main {
    public static void main(String[] args) {
        int a = 1, b = 1;
        
        while(a <= 3) {
            System.out.println("[a = " + a + "일 때]");
            
            while(b <= 2) {
                System.out.println("b = " + b);
                ++b;
            }
            
            ++a;
            b = 1;
        }
    }
}
cs

Line 3 : 정수형 변수 a, b 선언 후 각각 1로 초기화

Line 5 : a가 3보다 작거나 같은 동안 블록 안의 내용 반복

Line 6 : a의 값 출력

Line 8 : b가 2보다 작거나 같은 동안 블록 안의 내용 반복

Line 9 : b의 값 출력

Line 10 : b를 1 증가

Line 13 : a를 1 증가

Line 14 : 내부의 while문을 빠져나오면 b를 다시 1부터 출력해 주기 위해 b를 1로 초기화

a b
1 1
1 2
2 1
2 2
3 1
3 2

 

'Java' 카테고리의 다른 글

자바(Java) for문  (0) 2020.06.26
자바(Java) do-while문  (0) 2020.06.26
자바(Java) switch-case문  (0) 2020.06.25
자바(Java) if문 (if, if-else, if-else if-else)  (0) 2020.06.25
자바(Java) 연산자 우선순위  (0) 2020.06.24

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

switch-case문은 case 뒤의 값과 일치하는 경우 분기하는 조건 분기문이다. break를 통해 switch-case문을 빠져나갈 수 있고, default를 통해 if-else if-else문의 else처럼 case 이외의 조건을 처리할 수도 있다. case 뒤에는 정수나 문자만 사용할 수 있었지만, JAVA 7 버전부터 문자열도 사용할 수 있게 되었다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        
        System.out.print("월 입력 : ");
        int month = keyboard.nextInt();
        
        switch(month) {
        case 1 :
        case 3 : 
        case 5 : 
        case 7 : 
        case 8 : 
        case 10 : 
        case 12 : 
            System.out.println(month + "월은 31일까지 있습니다.");
            break;
        case 4 : 
        case 6 : 
        case 9 : 
        case 11 : 
            System.out.println(month + "월은 30일까지 있습니다.");
            break;
        case 2 :
            System.out.println(month + "월은 28일까지 있습니다.");
            break;
        default : 
            System.out.println("잘못된 값을 입력하였습니다.");
            break;
        }
    }
}
cs

Line 8 : 정수를 입력받아 변수 month에 저장

Line 10 : month에 따른 분기

Line 11 ~ 17 : month가1, 3, 5, 7, 9, 10, 12 중 하나인 경우, Line 18 ~ 19 실행 후 Line 33으로 이동

Line 20 ~ 23 : month가 4, 6, 8, 11 중 하나인 경우, Line 24 ~ 25 실행 후 Line 33으로 이동

Line 26 : month가 2인 경우, Line 27 ~ 28 실행 후 Line 33으로 이동

Line 29 : month가 1~12의 값이 아닌 경우, Line 30 ~ 31 실행 후 Line 33으로 이동

'Java' 카테고리의 다른 글

자바(Java) do-while문  (0) 2020.06.26
자바(Java) while문  (0) 2020.06.26
자바(Java) if문 (if, if-else, if-else if-else)  (0) 2020.06.25
자바(Java) 연산자 우선순위  (0) 2020.06.24
자바(Java) 비트 연산자  (0) 2020.06.24

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

if문은 어떤 조건의 참, 거짓 여부를 판단하여 실행을 제어하는 구조이다. 참은 true, 거짓은 false로 표현한다.

 

■ if

- 조건식이 참인 경우에만 중괄호 내용을 실행 (내용이 한 줄인 경우에는 중괄호를 빼고 사용하기도 한다.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        
        System.out.print("정수 입력 : ");
        int num = keyboard.nextInt();
        
        if(num > 0) {
            System.out.println(num + "은 자연수");
        }
        
        System.out.println("프로그램 종료");
    }
}
cs

Line 8 : 정수를 입력받아 변수 num에 저장

Line 10 : num의 값이 0보다 큰 경우, Line 11 실행 후 Line 14로 이동

 

■ if-else

-  조건식이 참인 경우 if의 중괄호 내용을 실행하고, 거짓인 경우 else의 중괄호 내용을 실행

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        
        System.out.print("정수 입력 : ");
        int num = keyboard.nextInt();
        
        if(num > 0) {
            System.out.println(num + "은 자연수");
        } else {
            System.out.println(num + "은 자연수가 아님");
        }
        
        System.out.println("프로그램 종료");
    }
}
cs

Line 8 : 정수를 입력받아 변수 num에 저장

Line 10 : num의 값이 0보다 큰 경우, Line 11 실행 후 Line 15로 이동

Line 12 : num의 값이 0보다 크지 않은 경우, Line 13 실행 후 Line 15로 이동

 

■ if-else if-else

- if의 조건식이 참인 경우 if의 중괄호 안의 내용을 실행하고, if의 조건식이 거짓이고 else if의 조건식이 참인 경우 else if의 중괄호 내용을 실행. 그 외에는 else의 중괄호 내용을 실행

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        
        System.out.print("정수 입력 : ");
        int num = keyboard.nextInt();
        
        if(num > 0) {
            System.out.println("양의 정수");
        } else if(num == 0) {
            System.out.println("0");
        }else {
            System.out.println("음의 정수");
        }
        
        System.out.println("프로그램 종료");
    }
}
cs

Line 8 : 정수를 입력받아 변수 num에 저장

Line 10 : num의 값이 0보다 큰 경우, Line 11 실행 후 Line 18로 이동

Line 12 : num의 값이 0인 경우, Line 13 실행 후 Line 18로 이동

Line 14 : num의 값이 0보다 작은 경우, Line 15 실행 후  Line 18로 이동

 

※ "if-if-if" vs "if-else if-else"

- 아래의 [코드 1]처럼 if문 3개를 사용하는 경우, 첫 번째 if문을 만족하더라도 아래의 if문을 계속해서 비교한다. 하지만, [코드 2]처럼 if-else if-else문을 사용하는 경우 하나의 조건문을 만족하면 다음의 조건문을 비교하지 않고 건너뛰기 때문에, 속도면에서 조금 더 유리하다.

 

[코드 1]

1
2
3
4
5
6
7
8
9
if(num > 0) {
    System.out.println("양의 정수");
}
if(num == 0) {
    System.out.println("0");
}
if(num < 0) {
    System.out.println("음의 정수");
}
cs

 

[코드 2]

1
2
3
4
5
6
7
if(num > 0) {
    System.out.println("양의 정수");
else if(num == 0) {
    System.out.println("0");
}else {
    System.out.println("음의 정수");
}
cs

'Java' 카테고리의 다른 글

자바(Java) while문  (0) 2020.06.26
자바(Java) switch-case문  (0) 2020.06.25
자바(Java) 연산자 우선순위  (0) 2020.06.24
자바(Java) 비트 연산자  (0) 2020.06.24
자바(Java) 연산자(Operator)  (0) 2020.06.23

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

수학에서 2 + 3 * 2를 계산할 때, 우리는 연산자 우선순위에 의해 *을 먼저 계산하고, +을 계산하여 8이라는 결과 값을 얻어낸다. 이와 마찬가지로 컴퓨터에도 연산자 우선순위가 존재한다.

연산기호 결합방향 우선순위
[ ], . 1(높음)
expr++, expr-- 2
++expr, --expr, +expr, -expr, ~, !, (type) 3
*, /, % 4
+, - 5
<<, >>, >>> 6
<, >, <=, >=, instanceof 7
==, != 8
& 9
^ 10
| 11
&& 12
|| 13
? expr : expr 14
=, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= 15(낮음)

 

'Java' 카테고리의 다른 글

자바(Java) switch-case문  (0) 2020.06.25
자바(Java) if문 (if, if-else, if-else if-else)  (0) 2020.06.25
자바(Java) 비트 연산자  (0) 2020.06.24
자바(Java) 연산자(Operator)  (0) 2020.06.23
자바(JAVA) 자료형 변환  (0) 2020.06.18

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

비트 연산자는 비트(Bit) 단위로 연산을 수행하는 연산자이다. 비트 연산자를 이용하면 연산을 더 빠르게 수행할 수 있다.

 

 

■ & 연산자

- 두 개의 비트가 모두 1일 때 1을 반환 (아래 그림은 4와 7의 AND 연산 결과)

 

■ | 연산자

- 두 개의 비트중 하나만 1이면 1을 반환 (아래 그림은 4와 7의 OR연산 결과)

 

■ ^ 연산자

- 두 개의 비트가 서로 다를 경우 1을 반환 (아래 그림은 4와 7의 XOR연산 결과)

 

■ ~ 연산자

- 부호비트도 포함하여 0은 1로 1은 0으로 반전 (아래 그림은 4의 NOT연산 결과)

 

■ << 연산자

- 왼쪽으로 지정된 칸만큼 이동하는 연산자로, 앞으로 이동한 비트는 삭제되고 뒤의 빈 공간은 0으로 채우게 된다. 1비트씩 왼쪽으로 이동할 때마다 값이 2배가 된다. (아래 그림은 4 << 2 연산 결과)

 

■ >> 연산자

- 오른쪽으로 지정된 칸만큼 이동하는 연산자로, 뒤로 이동한 비트는 삭제되고 앞의 빈공간은 왼쪽 항의 부호 비트(MSB)가 0이면 0, 부호 비트(MSB)가 1이면 1로 채운다. (아래 그림은 4 >> 2, -4 >> 2 연산 결과)

 

■ >>> 연산자

- 오른쪽으로 지정된 칸만큼 이동하는 연산자로, 뒤로 이동한 비트는 삭제되고 앞의 빈공간은 왼쪽 항의 부호 비트(MSB)에 상관없이 0으로 채운다. (아래 그림은 4 >>> 2, -4 >>> 2 연산 결과)

'Java' 카테고리의 다른 글

자바(Java) if문 (if, if-else, if-else if-else)  (0) 2020.06.25
자바(Java) 연산자 우선순위  (0) 2020.06.24
자바(Java) 연산자(Operator)  (0) 2020.06.23
자바(JAVA) 자료형 변환  (0) 2020.06.18
자바(Java) 상수  (0) 2020.06.18

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

연산에 사용하는 기호를 연산자(Operator)라고 하며, 연산에 사용하는 값을 항(Operand)이라고 한다. 예를 들어 1 + 2에서 1과 2는 항이고 +는 연산자이다.

연산자 기능
단항 연산자 항이 한 개인 연산자 ++num
이항 연산자 항이 두 개인 연산자 num1 + num2
삼항 연산자 항이 세 개인 연산자 (num1 > num2) ? 1 : 0

 

■ 대입 연산자

- 오른쪽에 있는 값이나 수식을 계산하여 왼쪽에 있는 변수에 넣어주는 연산자이다.

1
2
3
4
5
6
7
8
public class Main {
    public static void main(String[] args) {
        int x = 10, y = 20;
        int z = x + y;
 
        System.out.println("x + y = " + z); // x + y = 30
    }
}
cs

 

■ 부호 연산자

- 양수와 음수를 나타내는 연산자이다.

연산자 기능
+ 변수나 상수의 값을 양수로 만듦 +1
- 변수나 상수의 값을 음수로 만듦 -1
1
2
3
4
5
6
7
8
public class Main {
    public static void main(String[] args) {
        int x = +10, y = -5;
        
        System.out.println("x = " + x); // x = 10
        System.out.println("y = " + y); // y = -5
    }
}
cs

 

■ 산술 연산자

- 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산을 할 때 사용되는 연산자이다.

연산자 기능
+ 덧셈 x + y
- 뺄셈 x - y
* 곱셈 x * y
/ 나눗셈 x / y
% 나머지 x % y
1
2
3
4
5
6
7
8
9
10
11
public class Main {
    public static void main(String[] args) {
        int x = 3, y = 2;
 
        System.out.println("x + y = " + (x + y)); // x + y = 5
        System.out.println("x - y = " + (x - y)); // x - y = 1
        System.out.println("x * y = " + (x * y)); // x * y = 6
        System.out.println("x / y = " + (x / y)); // x / y = 1
        System.out.println("x % y = " + (x % y)); // x % y = 1
    }
}
cs

 

■ 증감 연산자

- 후위 증감 연산자 : 증감 연산자를 사용한 줄에서는 증감하지 않은 값을 사용하고, 해당 줄을 넘어가면 증감시킨다.

- 전위 증감 연산자 : 증감 연산자를 사용한 줄에서부터 증감시킨다.

연산자 기능
++ 항의 값을 1 증가시킨다. num++
++num
-- 항의 값을 1 감소시킨다. num--
--num
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Main {
    public static void main(String[] args) {
        int x = 10;
 
        System.out.println("x++ = " + x++); // x++ = 10
        System.out.println("x = " + x); // x = 11
        System.out.println("++x = " + ++x); // ++x = 12
        System.out.println("x = " + x); // x = 12
        System.out.println("x-- = " + x--); // x-- = 12
        System.out.println("x = " + x); // x = 11
        System.out.println("--x = " + --x); // --x = 10
        System.out.println("x = " + x); // x = 10
    }
}
cs

 

■ 관계 연산자

- 두 식의 대소관계를 비교하는 연산자로서, 결과를 참(true)이나 거짓(false)으로 표현한다.

연산자 기능
> 왼쪽 항이 크면 참, 아니면 거짓 반환 x > y
< 왼쪽 항이 작으면 참, 아니면 거짓 반환 x < y
>= 왼쪽 항이 크거나 같으면 참, 아니면 거짓 반환 x >= y
<= 왼쪽 항이 작거나 같으면 참, 아니면 거짓 반환 x <= y
== 두 항이 같으면 참, 아니면 거짓 반환 x == y
!= 두 항이 다르면 참, 아니면 거짓 반환 x != y
1
2
3
4
5
6
7
8
9
10
11
12
public class Main {
    public static void main(String[] args) {
        int x = 3, y = 5;
 
        System.out.println("x > y = " + (x > y)); // x > y = false
        System.out.println("x < y = " + (x < y)); // x < y = true
        System.out.println("x >= y = " + (x >= y)); // x >= y = false
        System.out.println("x <= y = " + (x <= y)); // x <= y = true
        System.out.println("x == y = " + (x == y)); // x == y = false
        System.out.println("x != y = " + (x != y)); // x != y = true
    }
}
cs

 

■ 논리 연산자

- 논리 곱(AND), 논리 합(OR), 논리 부정(NOT)의 연산을 할 때 사용된다.

연산자 기능
&& 두 항이 모두 참인 경우에만 참 x && y
|| 두 항 중 하나의 항이라도 참이면 참 x || y
! 참인 경우 거짓, 거짓인 경우 참으로 바꾼다. !x
1
2
3
4
5
6
7
8
9
public class Main {
    public static void main(String[] args) {
        boolean x = true, y = false;
          
        System.out.println("x && y = " + (x && y)); // x && y = false
        System.out.println("x || y = " + (x || y)); // x || y = true
        System.out.println("!x = " + (!x)); // !x = false
    }
}
cs

 

■ 복합 대입 연산자

- 대입 연산자와 다른 연산자를 조합해 하나의 연산자로 사용할 수 있다.

연산자 기능
+= a = a + 2와 동일 a += 2
-= a = a - 2와 동일 a -= 2
*= a = a * 2와 동일 a *= 2
/= a = a / 2와 동일 a /= 2
%= a = a % 2와 동일 a %= 2
<<= a = a << 2와 동일 a <<= 2
>>= a = a >> 2와 동일 a >>= 2
>>>= 2는 a = a >>> 2와 동일 a >>>= 2
&= a = a & 2와 동일 a &= 2
|= a = a | 2와 동일 a |= 2
^= a = a ^ 2와 동일 a ^= 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Main {
    public static void main(String[] args) {
        int a = 7;
        
        System.out.println("a += 2 : " + (a += 2)); // a += 2 : 9
        System.out.println("a -= 2 : " + (a -= 2)); // a -= 2 : 7
        System.out.println("a *= 2 : " + (a *= 2)); // a *= 2 : 14
        System.out.println("a /= 2 : " + (a /= 2)); // a /= 2 : 7
        System.out.println("a %= 2 : " + (a %= 2)); // a %= 2 : 1
        System.out.println("a <<= 2 : " + (a <<= 2)); // a <<= 2 : 4
        System.out.println("a >>= 2 : " + (a >>= 2)); // a >>= 2 : 1
        System.out.println("a >>>= 2 : " + (a >>>= 2)); // a >>>= 2 : 0
        System.out.println("a &= 2 : " + (a &= 2)); // a &= 2 : 0
        System.out.println("a |= 2 : " + (a |= 2)); // a |= 2 : 2
        System.out.println("a &= 2 : " + (a &= 2)); // a &= 2 : 2
    }
}
cs

 

■ 조건 연산자

- 조건 연산자는 삼항 연산자라고도 하며, 조건식이 참인 경우와 거짓인 경우 각각 다른 값이 나온다.

연산자 기능
조건식 ? 식1 : 식2 조건식이 참이면 식1, 거짓이면 식2 수행 (num % 2 == 0) ? "짝수" : "홀수"
1
2
3
4
5
6
7
8
public class Main {
    public static void main(String[] args) {
        int num1 = 10, num2 = 11;
        
        System.out.println("num1 : " + ((num1 % 2 == 0) ? "짝수" : "홀수")); // num1 : 짝수
        System.out.println("num2 : " + ((num2 % 2 == 0) ? "짝수" : "홀수")); // num2 : 홀수
    }
}
cs

'Java' 카테고리의 다른 글

자바(Java) 연산자 우선순위  (0) 2020.06.24
자바(Java) 비트 연산자  (0) 2020.06.24
자바(JAVA) 자료형 변환  (0) 2020.06.18
자바(Java) 상수  (0) 2020.06.18
문자 인코딩(Character Encoding) ASCII, ANSI, Unicode, UTF  (0) 2020.06.17

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

자료형 변환이란 데이터 형식(Type)을 변환하는 것으로 자동 형 변환(Implicit Conversion)과 강제 형 변환(Explicit Conversion)으로 나누어 진다.

■ 자동 형 변환(Implicit Conversion) : 자동적으로 발생하는 형태의 변환으로 묵시적 형 변환이라고도 한다.

1) 대입 연산에서의 자동 형 변환

- 대입 연산시, =의 왼쪽 값이 기준이 되고, 이항 연산자(=, +,-, *, /)는 양쪽 모두의 자료형과 결과까지 같아야 한다.

2) 산술 연산 과정의 자동 형 변환

- 산술 연산 과정에서의 형 변환은 데이터 손실이 최소화되는 방향(범위가 큰쪽)으로 진행된다.

(long은 8바이트 float의 크기는 4바이트지만, 정수보다 실수의 표현범위가 더 크기 때문에 float로 변환된다.)

 

1
2
3
4
5
6
public class Main {
    public static void main(String[] args) {
        double d = 7;
        int i = 'A';
    }
}
cs

Line 3 : int 형이 double 형으로 변환

Line 4 : char 형이 int 형으로 변환

 

■ 강제 형 변환(Explicit Conversion) : 프로그래머가 명시적으로 형 변환을 요청하는 형태의 변환으로 명시적 형 변환이라고도 한다.

1
2
3
4
5
6
7
8
9
public class Main {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
 
        double f = a / b;
        double g = (double)a / b;
    }
}
cs

Line 6 : int형 a / b의 결과인 0이 double형으로 자동 형변환 되어 f에 0.0 저장

Line 7 : int형 a를 double형으로 강제 형변환하여 10.0이 되고, b도 a와 연산을 하면서 double로 자동 형변환 되어 10.0 / 20.0의 계산 결과가 g에 저장

'Java' 카테고리의 다른 글

자바(Java) 비트 연산자  (0) 2020.06.24
자바(Java) 연산자(Operator)  (0) 2020.06.23
자바(Java) 상수  (0) 2020.06.18
문자 인코딩(Character Encoding) ASCII, ANSI, Unicode, UTF  (0) 2020.06.17
자바(Java) 변수  (0) 2020.06.17

+ Recent posts