# TIL - 2026.08.12

ssls·2026년 8월 12일

📌 오늘 학습한 주제

  • Java 정적 키워드(static)와 멤버/클래스 변수 및 메소드의 메모리 구조 (StaticApp.java)
  • 조건문 (if-else, 삼항 연산자, Switch-Expression) 및 메소드 오버로딩 (OperatorDemo.java)
  • 반복문 (for, while, do-while)과 제어 키워드 (break, continue, Labeled Loop)
  • String API 조작 (length(), charAt()) 및 역순 문자열 출력 (OperatorDemo.java)

💡 오늘 배운 것 — 나만의 언어로

① 오늘의 목표

  • Java의 static 키워드 동작 원리를 이해하고, 다양한 제어문(조건문/반복문)과 메소드 오버로딩 구문을 활용해 실전 객체지향 로직을 작성하기

② 학습할 내용

  • Static 키워드 및 상수 (StaticApp.java): static 변수와 메소드는 인스턴스 생성 없이 클래스명.멤버로 접근 가능하며, final 키워드가 붙은 상수(PI)는 값 수정이 불가능함을 확인했다.
  • 조건문과 Switch Expression (OperatorDemo.java): 기존 switch-case문 외에도 Java 14+ 람다 형태의 Switch Expression(case ->)을 통해 깔끔한 반환값 처리를 구현했다.
  • 반복문 및 난수 발생 (OperatorDemo.java): Math.random()을 활용해 난수를 생성하고 for, while, do-while 구문으로 누적 합을 계산했으며, 라벨(outer:)을 지정해 다중 루프를 원활하게 탈출하는 방식을 익혔다.
  • 문자열 순회 조작 (OperatorDemo.java): str.length()str.charAt(index) 함수를 조합하여 전달받은 문자열을 역순으로 출력하는 알고리즘을 실습했다.

💻 오늘 핵심 코드

1. Static 키워드와 상수 접근 (StaticApp.java)

import features.stat.StaticDemo;

public class StaticApp {
    public static void main(String[] args) {
        // 인스턴스 변수 접근
        StaticDemo demo = new StaticDemo(); 
        demo.message = "메시지 변경";

        // 클래스(Static) 변수 및 상수 접근 (인스턴스 생성 불필요)
        System.out.println(StaticDemo.staticMessage);
        System.out.println(StaticDemo.PI);

        // 메소드 호출 구분
        demo.instanceMethod();     // 인스턴스 메소드
        StaticDemo.classMethod();  // 클래스(Static) 메소드
    }
}

2. Switch Expression 및 다양한 반복문 구현 (OperatorDemo.java)

public class OperatorDemo {

    // Java 람다 스타일 Switch 표현식
    public String woodMan(int number) {
        String result = null;
        switch(number) {
            case 1  -> result = "산신령이 대답하길 ~ 거짓말하는구나";
            case 2  -> result = "산신령이 대답하길 ~ 또 거짓말하는구나";
            case 3  -> result = "산신령이 대답하길 ~ 정직하구나 너에게 모든 도끼를 주겠다";
            default -> result = "1 ~ 3 사이의 숫자를 입력해주세요.";
        } 
        return result;
    }

    // Math.random() 난수 발생 및 do-while 누적 합 계산
    public static int sumRandom() {
        int result = 0;
        int nan = (int)(Math.random() * 100) + 1; // 1 ~ 100 난수
        
        int data = 1; 
        do {
            result += data;
            data++;
        } while(data <= nan);

        return result;
    }

    // 문자열 역순 출력
    public void popStr(String str) {
        for(int idx = str.length() - 1; idx >= 0; idx--) {
            System.out.print(str.charAt(idx)); 
        }
        System.out.println();
    }
}

🛠️ 실습 / 결과물 & 참고 자료

③ 실습 / 결과물

  • 강의 실습코드: StaticApp.java, OperatorApp.java, GuessGameApp.java, OperatorDemo.java 파일 연동을 통해 static 멤버 제어, 난수 기반 반복문, 문자열 역순 출력(popStr) 실행 결과 확인.

④ 참고 자료

  • Oracle Java Documentation: Java Static Keyword & Control Flow Statements (Switch Expressions)

🔍 문제와 해결

  • 막힌 부분: 다중 반복문 구문(gugudan) 탈출 시 break 사용 시 가장 안쪽 루프만 종료되어 원하는 시점에 전체 반복을 빠져나가지 못하는 현상 점검.
  • 해결 방법: 바깥쪽 for문에 outer: 바깥 라벨을 지정하고 break outer;를 실행하여 중첩 반복문을 한 번에 탈출하도록 제어 흐름을 바로잡음.

🎯 다음에 할 일

  • Java 배열(Array) 및 Collection Framework(ArrayList) 기초 개념 학습하기
  • 클래스 상속(Inheritance)과 메소드 오버라이딩(Overriding) 문법 적용해보기
profile
성장중

0개의 댓글