ABOUT ME

-

Today
-
Yesterday
-
Total
-

Post Calendar

«   2024/11   »
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
  • Java Study [2022-07-28] - Java 기초(연산자, 반복문 등)
    백엔드 2022. 7. 29. 23:28

    📌 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(조건식) {
            수행문;
        }
    
        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';
        }

     

    • 자바 7부터 조건에 문자열 사용 가능
        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 실습

    day2


    댓글

Designed by Tistory.