250821 TIL

2025. 8. 21. 18:00·내배캠 끄적끄적/Today I Learned

📖 학습 계획, 배운 것

  • Java 기초 학습
    • 조건문, 반복문 ~ 형변환까지의 학습 계획
      • 조건문 
        • Switch문은 if문과 달리 값에 대한 비교만 가능함
          단, if문은 비교 연산자를 사용하여 비교, 편리함에 있어서는 Switch문의 기능을 적절히 활용할 것
           switch (조건식) {
              case value1:
                  // 조건식의 결과 값이 value1일 때 실행되는 코드
                  break;
              case value2:
                  // 조건식의 결과 값이 value2일 때 실행되는 코드
                  break;
              default:
                  // 조건식의 결과 값이 위의 어떤 값에도 해당하지 않을 때 실행되는 코드
          }
        • case에서의 break문이 없는 경우는 다음 case의 코드를 실행하게 된다
        • Java 14부터는 새로운 Switch문을 활용하여 구성할 수도 있음
          package cond;
          
          public class Switch4 {
              public static void main(String[] args) {
                  //grade 1:1000, 2:2000, 3:3000, 나머지 : 500
                  int grade = 2;
          
                  int coupon = switch (grade) {
                      case 1 -> 1000;
                      case 2 -> 2000;
                      case 3 -> 3000;
                      default -> 500;
                  };
                  System.out.println("발급받은 쿠폰 : " + coupon);
              }
          }

          차이점은 '->' 를 사용하여 표현하고, 선택된 데이터를 반환할 수 있다는 부분, 이후 내용에 대해서는 후에 학습한 내용으로 보충할 예정
      • 삼향 연산자
        • 단순히 참과 거짓에 따라 특정 값을 구하는 경우는 삼항 연산자 또는 조건 연산자인 '?:' 연산자를 사용할 수 있음
          (조건) ? 참_표현식 : 거짓_표현식


      • 반복문
        • while, do-while, for 를 활용하여 구성
        • while문
          while (조건식) {
                  // 코드
                  }
          변수 선언을 통해 조건문 안에서도 정해진 변수만큼의 반복 횟수를 유연하게 변경할 수 있음 
        • do-while문
          do {
                  // 코드
                  } while (조건식);
           조건에 상관없이 무조건 한번은 코드를 실행하게 됨. while 안의 조건을 만족할 경우 다시 반복되나, 조건이 거짓인 경우에는 do-while문을 빠져나오게 됨

        • break, continue
          • 모든 반복문에서 사용할 수 있으며
            break는 반복문을 즉시 종료하고 나감
            while(조건식) {
            코드1;
             break;//즉시 while문 종료로 이동한다.
            코드2;
             }
            //while문 종료


            continue는 반복문의 나머지 부분을 건너뛰고 다음 반복으로 진행하는데 사용
             while(조건식) {
            코드1;
             continue;//즉시 조건식으로 이동한다.
            코드2;
             }


          • for문
            • for문은 주로 반복 횟수가 정해져 있을때 사용
              for (1.초기식; 2.조건식; 4.증감식) {
                     // 3.코드
                     }

              for문의 실행 순서는 아래와 같음
              1. 초기실 실행. 딱 1번만 사용됨
              2. 조건식 검증. 참이면 코드 실행, 거짓인 경우 for문 탈출
              3. 코드 실행
              4. 코드 종료 시 증감식 실행
              5. 다시 조건식부터 실행(무한반복)
            • 세미콜론(;)을 유지하고 초기식, 조건식, 증감식은 생략해도 무방함
      • 스코프, 형변환
        • 선언한 위치에 따라 지역 변수, 멤버 변수(클래스 변수, 인스턴스 변수)와 같이 분류
          • 멤버 변수는 후에 학습, 지역변수를 우선적으로 기억 할 것
            지역 변수는 이름 그대로 특정 지역에서만 사용할 수 있는 변수, 지역을 벗어나면 사용할 수 없음!
        • 변수의 접근 가능한 범위를 스코프(Scope)라 함.

📝 학습 간 궁금한 부분

  • 누적 합 계산에 있어서 아래의 예제에 맞는 정답을 만들고자 했음
    • while문과 for 문 2가지 버전의 정답을 만들어야 함
    • 문제 : 반복문을 사용하여 1부터 max 까지의 합을 계산하고 출력하는 프로그램 작성. 이때, sum 이라는 변수를 사용하여 누적 합을 표현하고, i라는 변수를 사용하여 카운트(1 ~ max 증가하는 변수) 를 수행해야 함

      출력 예시는 아래와 같음 
      //max=1
      1
      //max=2
      3
      //max=3
      6
      //max=100
      5050


    • for 문 풀이 진행 간 아래와 같이 코드 구성을 진행했음
      package loop.ex;
      
      public class ForEx3 {
          public static void main(String[] args) {
              for (int i = 1, sum = 0, max = 100; i <= max; sum += i, i++) {
                  System.out.println(sum+i);
              }
          }
      }
       여기서 발생한 문제점은  누적 합의 최종결과를 보여주는 것이 아닌 증가하는 값마다의 결과값을 노출시키는 오류가 발생했음

      반복문 내에서의 println 명령어로 인하여 증가하는 변수의 값들을 일일히 보여주는 에러가 발생하는 것을 발견 아래와 같이 수정 시 정상 결과값을 도출해 내는 부분을 확인했음

      package loop.ex;
      
      public class ForEx3 {
          public static void main(String[] args) {
              int max = 100;
              int sum = 0;
              for (int i = 1; i <= max; i++) {
                  sum += i;
              }
              System.out.println(sum);
          }
      }
      * 혹여나 위의 정답에서도 println을 for문 안에 넣게 되면 잘못된 결과를 도출했던 에러와 동일한 상황을 만들어 낼 수 있음을 확인했음

 

💡느낀점 및 보완 필요사항

  • while vs for
    • for문
      • 장점
        1. 초기화, 조건 체크, 반복 후의 작업을 한 줄로 처리할 수 있어서 편리함
        2. 정해진 횟수만큼의 반복 수행을 하기에 적합함
        3. 루프 변수의 범위가 for 루프 블록에 제한되므로, 다른 곳에서 이 변수를 실수로 변경할 가능성이 적음

      • 단점
        1. 루프의 조건이 루프 내부에서 변경되는 경우, for 루프는 관리하기 힘듦
        2. 복잡한 조건을 가진 반복문을 작성하기에는 while문이 적합함
    • while문
      • 장점
        1. 루프의 조건이 루프 내부에서 변경되는 경우, while 루프는 이를 관리하기 쉬움
        2. for 루프보다 더 복잡한 조건과 시나리오에 적합함
        3. 조건이 충족되는 동안 계속해서 루프를 실행하며, 종료 시점을 명확하게 알 수 없는 경우 용이

      • 단점
        1. 초기화, 조건 체크, 반복 후의 작업이 분사되어 있어 코드를 이해하거나 작성에 어려움이 있을 수 있음
        2. 루프 변수가 while 블록 바깥에서도 접근 가능하므로, 이 변수를 실수로 변경하는 상황이 발생할 수 있음

 

  • 예제 실습 간 진행했던 것처럼 반복문, 특히 중첩반복문의 경우 초기값 설정과 범위 그리고 노출하고자 하는 결과값이 어느 단계에서 실행되어야 하는지에 대한 명확한 이해도가 필요함을 확인했음.
    • 지속적으로 반복 숙달 과정을 거치면서 반복문의 실행 범위, 변수의 범위를 통해 선언 가능 부분, 결과값 출력에 있어 어느 위치에 구성하느냐에 따른 결과값의 변동 등을 확인할 수 있도록 해야겠다.

 

'내배캠 끄적끄적 > Today I Learned' 카테고리의 다른 글

250825 TIL  (4) 2025.08.25
250822 TIL  (0) 2025.08.22
250819 TIL  (2) 2025.08.19
250818 TIL  (3) 2025.08.18
250814 TIL  (4) 2025.08.14
'내배캠 끄적끄적/Today I Learned' 카테고리의 다른 글
  • 250825 TIL
  • 250822 TIL
  • 250819 TIL
  • 250818 TIL
stark77
stark77
하마의 IT 자기개발 이모저모, 백엔드 개발자로 거듭나기
  • stark77
    하마의 개발자 성장일기
    stark77
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 컴퓨터구조와 운영체제
        • 컴퓨터구조
        • 운영체제
      • SQL 기초
      • Spring
        • 백엔드 기초
        • Spring 실습
      • JAVA
        • Java 실습
      • HTML&CSS
        • HTML&CSS 실습
      • Git&GitHub
        • Git&GitHub 실습
      • 내배캠 끄적끄적
        • Today I Learned
      • 유용한 툴 및 사이트 정리
      • 취미
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Til
    웹소켓
    java
    다형성
    String.format
    객체지향프로그래밍
    SpringSecurity
    MVC
    for문
    jsp
    WebSocket
    HTML&CSS
    RestTemplate
    Java 문법기초
    Stomp
    thymleaf
    BEAN
    git
    실시간 데이터 처리
    백엔드 기초
    네트워크 기초
    algorithm
    JPA
    Spriingboot
    경합조건과 교착상태
    프로세스와 쓰레드
    Github
    Spring
    객체지향
    백엔드 기초다지기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
stark77
250821 TIL
상단으로

티스토리툴바