# TIL - 2026.08.11

ssls·2026년 8월 11일

📌 오늘 학습한 주제

  • Java 기본 변수 타입(Primitive Type) 및 참조 타입(Reference Type)과 Scope (VariableApp.java)
  • Wrapper Class 개념 및 기본 타입과의 연산 처리
  • 객체 생성 및 인스턴스 멤버(변수, 메소드) 접근 제어 (TeacherApp.java)
  • Lombok 디자인 패턴: Builder 패턴을 활용한 DTO 객체 생성 (BlogApp.java)

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

① 오늘의 목표

  • Java 프로그래밍 기초 체계(기본/참조 데이터 타입, Scope)를 정립하고, 클래스 인스턴스 생성 및 Builder 패턴을 활용한 객체 생성 기법을 익히기

② 학습할 내용

  • 변수의 종류와 Scope (VariableApp.java): 정수형(int), 실수형(double), 문자형(char), 논리형(boolean), 문자열(String) 기본 타입과 참조 타입을 구분하고, 선언 위치(클래스 블록 vs 메소드 블록)에 따른 멤버 변수와 지역 변수의 Scope 차이를 배웠다.
  • Wrapper Class (VariableApp.java): 기본 타입 객체화 클래스인 Wrapper Class(Integer 등)의 특징을 확인하고 기본 타입과의 덧셈 연산을 다루었다.
  • 인스턴스 생성 및 접근 (TeacherApp.java): new 연산자를 활용해 클래스의 인스턴스를 메모리에 생성하고, Getter/Setter 메소드 및 인스턴스 변수에 접근하는 원리를 확인했다.
  • Builder 패턴 적용 (BlogApp.java): 가독성과 유연성을 높여주는 Builder 패턴(BlogRequestDTO.builder()...build())을 통해 객체를 생성하고 Setter를 통한 데이터 수정 동작을 연습했다.

💻 오늘 핵심 코드

1. Java 데이터 타입과 Scope 및 Wrapper Class (VariableApp.java)

public class VariableApp {
    public static void main(String args[]) {
        // 메소드 블록 내 선언된 지역변수
        String name          = "임정섭";
        int    age           = 20;
        double height        = 178.0;
        char   gender        = 'm';
        boolean isMarriage   = true;

        System.out.println("name 	" + name);
        System.out.println("age 	" + age);
        System.out.println("height 	" + height);
        System.out.println("gender 	" + gender);
        System.out.println("isMarriage 	" + isMarriage);

        // Wrapper Class 활용
        Integer ii = 10;
        System.out.println(10 + ii);
    }
}

2. 인스턴스 생성 및 메소드/변수 접근 (TeacherApp.java)

import features.var.Teacher;

public class TeacherApp {
    public static void main (String[] args) {
        // new 연산자를 이용한 인스턴스 생성
        Teacher teacher = new Teacher();
        System.out.println("teacher - " + teacher);
        
        // 인스턴스 메소드 접근 (Setter / Getter)
        teacher.setName("임정섭");
        String name = teacher.getName();
        System.out.println(name);
        
        // 인스턴스 변수 접근
        teacher.name = "inspire";
        System.out.println(name);
    }
}

3. Builder 패턴을 활용한 DTO 객체 생성 (BlogApp.java)

import features.blogs.domain.dto.BlogRequestDTO;

public class BlogApp {
    public static void main(String[] args) {
        System.out.println(">>>> Builder 이용한 객체생성");
        
        // Builder 패턴으로 가독성 높은 객체 생성
        BlogRequestDTO request = BlogRequestDTO.builder() 
                                 .title("자바 첫날입니다")
                                 .content("재미있다")
                                 .email("jslim9413@naver.com")
                                 .build();

        request.setTitle("조기퇴근");
        System.out.println("title : " + request.getTitle());
    }
}

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

③ 실습 / 결과물

  • 강의 실습코드: VariableApp.java, TeacherApp.java, BlogApp.java 코드를 작성하고 실행하여 기본 변수 출력, 인스턴스 생성, Builder 패턴 기반 DTO 데이터 제어 동작을 확인 함.

④ 참고 자료

  • Oracle Java Documentation: Java Primitive Data Types & Class Instantiation 예제 참고

🔍 문제와 해결

  • 막힌 부분: new 연산자로 생성된 인스턴스와 Builder 패턴 방식으로 생성된 DTO 객체 간의 생성 구조 및 변수 접근자(private vs public)에 따른 접근 제한 개념 점검.
  • 해결 방법: 변수의 direct 접근 대신 Getter/Setter 메소드를 사용하는 encapsulation(캡슐화) 원칙을 확인하고, Builder 패턴을 사용해 객체 생성 시 생성자 오버로딩 순서 오염 방지 이점을 파악함.

🎯 다음에 할 일

  • Java 조건문(if, switch)과 반복문(for, while)을 사용해 제어문 로직 구현해보기
  • 클래스 캡슐화(Private 변수 + Getter/Setter)와 접근 지정자 범위 학습하기
profile
성장중

0개의 댓글