Java

[Java] 연산자(증감 / 산술 / Shift / 논리 / 비교 / 비트 / 논리 / 삼항 / 대입), 반복문(for문 / while문 / do~while문)

소댓 2023. 3. 3. 18:19

[ 연산자 ] 

- 자료 가공을 위해 정해진 방식에 따라 계산하고 그 결과를 얻기 위한 행위를 의미하는 기호들의 총칭

 

 

1. 증감 연산자 : ++, --

 

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package day01;
 
// 연산자 : 자료 가공을 위해 정해진 방식에 따라 계산하고 그 결과를 얻기 위한 행위를
//           의미하는 기호들의 총칭
// 1. 증감연산자 : ++, --
 
public class OperEx1 {
    public static void main(String[] args) {
        
        // a라는 이름의 int 크기의 공간을 선언
        int a;
        
        // a에 100 값을 할당
        a = 100;
        
        // b라는 이름의 int 크기의 공간 선언하면서 10 값을 할당
        int b = 10;
        
        // a, b를 화면에 출력
        System.out.println("a  : " + a);
        System.out.println("b : " + b);
        System.out.println("--------------");
        
        a = a + 1// 우항에 위치한 값을 왼쪽의 변수에 대입(할당)하라 : 연산자 2개 사용
        // a, b를 화면에 출력
        System.out.println("a : " + a);
        System.out.println("b : " + b);
        System.out.println("--------------");
        
        ++a;
        // a++; // 자기 자신의 값을 1 증가시킴 : 연산자 1개 사용 > 권장
        // a--; // 1 감소시킴
        // a, b를 화면에 출력
        System.out.println("a  : " + a);
        System.out.println("b : " + b);
        
        System.out.println("==============================");
        a = 100;
        b = 10;
        // 멀티 라인 주석 설정, 해제 단축키 : ctrl + /
//        a = a + 1; // a <-- 101
//        b = a; // a 변수의 값을 b 변수에 대입한다.
//        b = ++a; // a를 먼저 증가시키고 b에 대입
        
//        b = a;
//        a = a + 1;
        b = a++// 대입한 뒤 증가
        
        System.out.println("a  : " + a);
        System.out.println("b : " + b);
        
    }
 
    
}
cs

 

 

2. 산술 연산자 : +, -, *, /, %

 

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package day02;
//2. 산술연산자
public class OperEx2 {
    // main method
    public static void main(String[] args) {
        
        // int형 변수 a를 선언하고 10을 할당
        int a = 10;
        // int형 변수 b를 선언하고 20을 할당
        int b = 20;
        
        // +
        // 1. 연결 연산자 : 문자열 뒤에 오면 +
        // 2. 산술 연산자 : 숫자 + 숫자
        
        // 표준 출력장치로 a + b : 30 형식으로 출력
        // 연산자 우선 순위 () <-- 
        System.out.println("a + b : " + ( a + b ));
        System.out.println("a - b : " + ( a - b ));
        System.out.println("a * b : " + ( a * b ));
        System.out.println("a / b : " + ( a / b )); 
        // 연산 후 0.5지만 int 이하의 값은 연산하면 int가 되므로 
        // 실수 float이 될 수는 없다.
        // 따라서 정수 부분인 0만 남는다.
        
        // a/b의 나머지를 출력
        System.out.println("a % b : " + ( a % b ));
        
        // byte형 변수 b1을 선언하고 100을 값으로 할당
        byte b1 = 100;
        
        // byte형 변수 b2을 선언하고 30을 값으로 할당
        byte b2 = 30;
        
        //byte b3 = b1 + b2; //overflow << 
        // byte : -128 ~ 127 : 최대.. 25
        // int 이하의 자료형끼리 연산하면 결과는 int
        
        // int형 변수 c를 선언하고 b1 + b2의 값을 할당
        int c = b1 + b2;
        
        System.out.println("c : " + c);
        
        // double형 변수 d1을 선언하고 100.2 값을 할당
        double d1 = 100.2;
        
        // 두 변수 를 덧셈하려고 한다. 자료형은 무엇으로 하면 좋을까?
        // 연산할 때 더 큰 자료형으로
        double d2 = c + d1;
        
        System.out.println("d2 : " + d2);
    }
}
 
cs

 

 

3. Shift 연산자

byte b = 10; 0000 1010

- b >> 2

0 0 0 0 1 0 1 0

0 0 0 0 0 0 1 0

: 10진수로 2

 

- b << 2

0 0 0 0 1 0 1 0

0 0 1 0 1 0 0 0

: 10진수로 40

 

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
package day02;
// 3. shift 연산자
public class OperEx3 {
    public static void main(String[] args) {
        
        byte b = 10// 2^2 ==> 4
        
        System.out.println("b >> 2 : " + (b >> 2)); // 나누기
        System.out.println(b/4);
        
        // 컴퓨터 입장에서 *, / 보다 >>, << 연산속도가 훨씬 빠르다.
        // 게임과 같은 빠른 성능을 우선으로 하는 시스템 개발을 위해 shift 연산 사용
        // web 개발에서는 잘 사용 X
        
        System.out.println("b << 2 : " + (b << 2)); // 곱하기
        System.out.println(b*4);
        
        byte b2 = 20;
        
        // >>> : 오른쪽으로 밀고 남는 자리는 부호자리 값으로 채움
        // >> : 오른쪽으로 밀고 남는 자리는 0으로 채움
        // << : 왼쪽으로 밀고 남는 자리는 0으로 채움
        
        System.out.println("b2 >> 2 : " + (b2 >> 2)); // 5
        System.out.println("b2 << 2 : " + (b2 << 2)); // 80
    }
}
 
cs

 

 

4. 비교 연산자 : >, <, >=, <=, ==(같다), !=(다르다)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package day02;
// 4. 비교 연산자
// >, <, >=, <=, ==(같다), !=(다르다)
// = : 이건 대입연산자, 할당연산자로 쓰임
public class OperEx4 {
    //main method
    public static void main(String[] args) {
        //int형 변수 a에 100 대입
        int a = 100;
        //int형 변수 b에 20 대입
        int b = 20;
        
        // 비교식이 참인지 거짓인지 화면에 출력
        System.out.println("a : " + a);
        System.out.println("b : " + b);
        System.out.println("a > b : " + (a>b));
        System.out.println("a < b : " + (a<b));
        System.out.println("a >= b : " + (a>=b));
        System.out.println("a == b : " + (a==b));
        System.out.println("a != b : " + (a!=b));
        //System.out.println("a <> b : " + (a<>b));
    }
}
 
cs

 

 

5. 비트 연산자 : &, |

- 비트 단위로 연산

 

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
35
36
37
38
39
40
41
42
43
44
45
package day02;
// 5. 비트 연산자 : 비트 단위로 연산 (정수, 논리 연산 가능)
 
public class OperEx5 {
    // 메인 메서드
    public static void main(String[] args) {
        
        // 1 ==> true, 0 ==> false
        
        // false(0) and false(0) ==> false
        // false and true ==> false
        
        byte a = 10// 2진수 0000 1010
        byte b = 22// 2진수 0001 0110
        
        // and(&) 연산        
        // -----------------------------
        //                    0000 0010    
        
        // OR(|) 연산        
        // -----------------------------
        //                    0001 1110     
        
        System.out.println("a & b : " + (a & b));
        System.out.println("a | b : " + (a | b));
        
        
        byte k1 = 13// 1101
        
        byte k2 = 17// 1 1101
        
        // k1 & k2
        // k1 | k2
        System.out.println("k1 & k2 : " + (k1 & k2));
        System.out.println("k1 | k2 : " + (k1 | k2));
        
        // boolean형
        
        boolean b1 = true;
        boolean b2 = false;
        
        System.out.println("b1 & b2 : " + (b1 & b2));
        }
}
 
cs

 

 

6. 논리 연산자 &&, ||

- 논리형만 사용 가능! 정수형은 사용 불가

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package day02;
// 6. 논리 연산자 : &&, ||
// boolean 타입만 연산, 때문에 정수형은 연산이 안된다.
public class OpenEx6 {
    public static void main(String[] args) {
        
        boolean b1 = true;
        boolean b2 = false;
        
        System.out.println("b1 && b2 : " + (b1 && b2));
        System.out.println("b1 || b2 : " + (b1 || b2));
        
        byte c1 = 10;
        byte c2 = 20;
//        System.out.println("c1 && c2 : " + (c1 && c2)); > 연산 안됨
        
    }
}
 
cs

 

 

7. 삼항 연산자 : (조건)? ():거짓

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package day02;
 
 
// 단항연산자 : ++, --
// 이항연산자 : +, -
// 삼항연산자 : (조건) ? "참":"거짓"
 
public class OperEx7 {
    public static void main(String[] args) {
        
        int a = 10;
        int b = 5;
        
        // (조건) ? "참일 경우의 값":"거짓일 경우의 값"
        System.out.println((a>b)?"참":"거짓");
    }
}
 
cs

 

 

8. 대입 연산자 : =, +=, -=, *=, /=

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package day02;
// 8. 대입 연산자
// =, +=, -=, *=, /=, %=
public class OperEx8 {
    public static void main(String[] args) {
        
        int a = 10;
        
        // a = a + 1;
        //a++;
        
        //a에 2를 더하고 다시 a에 할당
        //a = a + 2;
        a += 2;
        
        System.out.println("a : " + a);
        
    }
}
 
cs

 

 

* 연산자의 우선 순위

: 1(증감 연산자) → 2(산술 연산자) → 3(Shift 연산자) → 4(비교 연산자) 

→ 5(비트 연산자) → 6(논리 연산자) → 7(삼항 연산자) → 8(대입 연산자)

 


# Java 구구단 출력 : println에 직접 입력해서

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package day02;
// ctrl + shift + f: 자동 정렬
public class StatementEx1 {
    public static void main(String[] args) {
 
        // ctrl + alt + 화살표 방향 아래키
        
        // 구구단 3단 출력
        System.out.println("3 * 1 = 3");
        System.out.println("3 * 2 = 6");
        System.out.println("3 * 3 = 9");
        System.out.println("3 * 4 = 12");
        System.out.println("3 * 5 = 15");
        System.out.println("3 * 6 = 18");
        System.out.println("3 * 7 = 21");
        System.out.println("3 * 8 = 24");
        System.out.println("3 * 9 = 27");
 
    }
}
 
cs

 


[ 반복문 ]

- 제어문 : 특정 문장을 만나면 문장이 실행흐름 변경

- 반복문 : 특정 구간을 반복해서 실행하게 하는 문장

> 제어문에 포함

 

* for문

- 횟수가 명확할 때 사용

for( 초기식; 조건식; 증감식) {

                      문장;

                      문장; 

       }

                                

- 초기식 : for 문에서 사용될 변수의 초기값을 할당

- 조건식 : 조건식의 결과값은 논리값으로 true이면 {}안의 문장을 실행하고

                        false이면 {} 안을 완전히 빠져나간다.

- 증감식 : for문에서 사용될 변수를 증가, 감소 처리해준다.

                                

# for문 시작 3단 출력

- 초기식 : int형 변수 i 1을 할당

- 조건식 : i 9보다 작거나 같을 때까지 반복문 실행

- 증감식 : i를 한번 반복할 때마다 1씩 증가해

for (int i =1;i <= 9;i++) {

                                 System.out.println(i + " 3 * " + i + " = " + (3*i));

 

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
package day02;
 
// main method 상단에서 하단 방향으로 1줄씩 실행
 
// 특정 문장을 만나면 문장이 실행흐름 변경 : 제어문
// 특정 구간을 반복해서 실행하게 하는 문장 : 반복문
 
public class StatementEx2 {
    public static void main(String[] args) {
        
            
        // for( 초기식; 조건식; 증감식) {
        //        문장;
        //        문장;
        // }
            
        // 초기식 : for 문에서 사용될 변수의 초기값을 할당
        // 조건식 : 조건식의 결과값은 논리값으로 true이면 {}안의 문장을 실행하고
        //           false이면 {} 안을 완전히 빠져나간다.
        // 증감식 : for문에서 사용될 변수를 증가, 감소 처리해준다.
            
        // for문 시작 3단 출력
        // 초기식 : int형 변수 i에 1을 할당
        // 조건식 : i가 9보다 작거나 같을 때까지 반복문 실행
        // 증감식 : i를 한번 반복할 때마다 1씩 증가해
        for (int i =1;i <= 9;i++) {
            System.out.println(i + " 3 * " + i + " = " + (3*i));
        }
    }
        
}
 
cs

 

# for 문으로 별( * ) 3줄 출력

 

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
package day02;
 
// main method 상단에서 하단 방향으로 1줄씩 실행
 
// 특정 문장을 만나면 문장이 실행흐름 변경 : 제어문
// 특정 구간을 반복해서 실행하게 하는 문장 : 반복문
 
public class StatementEx2 {
    public static void main(String[] args) {
        
            
        // for( 초기식; 조건식; 증감식) {
        //        문장;
        //        문장;
        // }
            
        // 초기식 : for 문에서 사용될 변수의 초기값을 할당
        // 조건식 : 조건식의 결과값은 논리값으로 true이면 {}안의 문장을 실행하고
        //           false이면 {} 안을 완전히 빠져나간다.
        // 증감식 : for문에서 사용될 변수를 증가, 감소 처리해준다.
            
        // for문 시작 3단 출력
        // 초기식 : int형 변수 i에 1을 할당
        // 조건식 : i가 9보다 작거나 같을 때까지 반복문 실행
        // 증감식 : i를 한번 반복할 때마다 1씩 증가해
        for (int i =1;i <= 9;i++) {
            System.out.println(i + " 3 * " + i + " = " + (3*i));
        }
    }
        
}
 
cs

 

# for 문으로 1부터 10까지 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package day02;
 
public class StatementTest2 {
    public static void main(String[] args) {
        
    // 1. 1부터 10까지 숫자를 화면에 출력
    System.out.println(1);
    System.out.println(2);
    System.out.println(3);
    System.out.println(4);
    System.out.println(5);
    System.out.println(6);
    System.out.println(7);
    System.out.println(8);
    System.out.println(9);
    System.out.println(10);
    
    System.out.println("---------------");    
    // 2. (반복문 사용)
    for (int i = 1; i <= 10; i++) {
        System.out.println(i);
        }
    }
}
cs

 

# for 문으로 1111부터 5555까지 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package day02;
 
public class StatementTest3 {
    public static void main(String[] args) {
        
        // 1111
        // 2222
        // 3333
        // 4444
        // 5555
        for (int i=1; i<=5; i++) {
            System.out.println("" + i + i + i + i);
        }
    }
}
 
cs

 

# for 문으로 +++++, ----- 반복 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package day02;
 
public class StatementTest4 {
    public static void main(String[] args) {
        
        /



/ +++++
        // -----
        // +++++
        // -----
        // +++++
        // -----
        for (int i=1; i<=3; i++) {
        System.out.println("+++++");
        System.out.println("-----");
        }
    }
}
 
cs

 

# for 문으로 누적합 출력

 

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package day02;
 
public class StatementTest5 {
    public static void main(String[] args) {
        
        // 1부터 5까지의 누적합을 출력
        
        // 1    누적합: 1
        // 2    누적합: 3
        // 3    누적합: 6
        // 4    누적합: 10
        // 5    누적합: 15
//        System.out.println("1 누적합 : 1");
//        System.out.println("2 누적합 : 3");
//        System.out.println("3 누적합 : 6");
//        System.out.println("4 누적합 : 10");
//        System.out.println("5 누적합 : 15");
        
        for(int i=1, sum=0 ; i <= 5; i++) {
            sum += i;
            System.out.println(i + " 누적합 : " + sum);
        }
        System.out.println("-----------------");
        
        int i = 1;
        int sum = 0;
        sum = i;
        System.out.println(i + " 누적합 : " + sum);
        
        i++// i <== 2
        // sum이라는 변수에 i를 누적
        sum = sum + i;
        System.out.println(i + " 누적합 : " + sum);
        
        i++;
        sum += i;
        System.out.println(i + " 누적합 : " + sum);
        
        i++;
        sum += i;
        System.out.println(i + " 누적합 : " + sum);
        
        i++;
        sum += i;
        System.out.println(i + " 누적합 : " + sum);
        
//        for (int i=1; i<=5; i++) {
//        System.out.println(i+(i++));
//        }
    }
}
 
cs

 

# for 문으로 1부터 100까지의 누적합 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package day02;
 
public class StatementTest6 {
    public static void main(String[] args) {
        //1부터 100까지의 누적합을 출력
        
        // for 초기식에서 선언된 변수는 for문 {} 안에서 존재하고 밖으로 빠져나오면 사라지는 변수
        // 지역변수 <--> 전역변수
        
        int sum=0// 전역변수
        
        for(int i = 1; i<=100;i++) {
            sum+=i;
            System.out.println("누적합 : "+ sum);
        }
//        System.out.println(i);
        int i= 100;
        
        System.out.println("1부터 100까지 누적합은 " +sum+ " 입니다");
        
    }
}
 
cs

 

# for 문으로 Hello java world 1부터 5까지 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package day02;
 
public class StatementTest7 {
    public static void main(String[] args) {
        
        String str = "Hello java world ";
        
        for (int i=1; i<=5; i++) {
            System.out.println(str + i);
        }
        
        System.out.println("반복문 탈출");
        
    }
}
 
cs

 

# for 문으로 1부터 10 까지의 홀수만 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package day02;
 
public class StatementTest8 {
    public static void main(String[] args) {
        
    // 1. 1부터 10까지 화면에 출력
    // 2. 반복문으로
    for (int i=1; i<=10; i++) {
        System.out.println(i);
    }
    
    System.out.println("---------");
    // 3. 1부터 10 사이의 홀수만 출력
    // ????
    for (int i=1; i<=10; i+=2) {
        System.out.println(i);
        }
    
    }
}
 
 
cs

 

# for 문을 활용한 String 반복문

 

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
package day02;
 
public class StatementTest9 {
    public static void main(String[] args) {
        
        // String을 사용해서 + 반복문
        
        String str = "";
        
        for(int i=1; i<=5; i++) {
            str += "*";
            System.out.println(str);
        }
        
//        str += "*";
//        System.out.println(str);
//        // *
//        str += "*";
//        System.out.println(str);
//        // **
//        str += "*";
//        System.out.println(str);
//        // ***
//        str += "*";
//        System.out.println(str);
//        // ****
    }
}
 
cs

 

 

* while문과 do ~ while문
- 조건에 의해서 반복을 할 때

 

- while문 > 조건을 만족하면 반복

while(조건) {
         문장1;
         문장2;
          }

- do ~ while문 > 여기에 있는 문장은 반드시 1번은 실행 된다.
do {
        문장1;
        문장2;
         } while (조건);

 

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
35
36
37
38
39
40
41
package day02;
 
public class StatementTest10 {
    public static void main(String[] args) {
        
    // while(조건) {
    // 문장1;
    // 문장2;
    // }
    
    // 구구단 3단 출력
    // 3 * 1 = 3 <== 9
    int i = 1;
    
    while(i<=9) { // 반복문을 잘못 쓰면 무한 반복
        System.out.println("3 * " + i + " = " + i*3);
        i++;
        }
        System.out.println("-----------------");
        
        
        // do {
        //         문장1;
        //         문장2;
        // } while (조건);  <=== ;
        
        // i, j, k, l, m, n 은 관습적으로 정수형 변수
        
        int j = 1;
        
        do {
            // 문장
            System.out.println("3 * " + j + " = " + j*3);
            // j의 값을 1씩 증가
            j++;
        } while(j<=9);
        
            
    }
}
 
cs

 

- Src : source
  Package는 폴더
- Srcnew 폴더 만들기
+ 자바 파일을 자동으로 컴파일해서 바이너리 폴더에 저장함