본문 바로가기
won2dev-log
HomeArchiveTagsCategoriesAboutProjects
HomeArchiveTagsCategoriesAboutProjects
won2dev-logwon2dev-logwon2dev-log

비전공 개발자의 로그 | won2dev-log

Navigation
  • Home
  • Archive
  • About
  • Projects
Categories
  • Docs
  • TIL
  • Automation
  • Git · GitHub
  • Project
Tags
  • TIL
  • Java
  • Spring
  • Backend
  • n8n
더보기
About

기록을 거름 삼아 공유는 성장을 만든다.

LicensePrivacy
© won2dev 2026. All rights reserved.
Home›Docs›TIL - Java 기초: static, 객체 없이 공유하는 멤버의 비밀
Docs

TIL - Java 기초: static, 객체 없이 공유하는 멤버의 비밀

won2dev·2025년 03월 12일
#Java#TIL
TIL - Java 기초: static, 객체 없이 공유하는 멤버의 비밀
⚠️ 이 글은 저작권 이슈로 인해 일부 내용이 수정 또는 제거되었습니다.

💬 배운 기술 / 지식

  • static 키워드란?
  • 클래스 변수 vs 인스턴스 변수
  • static 메서드
  • static 블록 & 주의사항

🧩 static 이란?

  • 클래스에 고정(static) 된 멤버를 의미
  • 객체를 생성하지 않아도 사용 가능
  • 클래스 로딩 시 메모리에 딱 한 번 할당됨 → 모든 객체가 공유
  • 적용 대상: 변수, 메서드, 블록, 이너 클래스

🔗 클래스 변수 vs 인스턴스 변수

구분선언 위치메모리 할당 시점접근 방법공유 여부
인스턴스 변수클래스 내부객체 생성 시obj.field❌ 개별 유지
클래스 변수 (static)클래스 내부클래스 로딩 시ClassName.field✅ 모든 객체가 공유
java
public class Counter {
    static int count = 0;  // 클래스 변수
    int id;                // 인스턴스 변수

    Counter() {
        count++;
        id = count;
    }
}
public class Counter {
    static int count = 0;  // 클래스 변수
    int id;                // 인스턴스 변수

    Counter() {
        count++;
        id = count;
    }
}

⚙️ static 메서드

  • 객체 없이 호출 가능 (클래스명.메서드명())
  • 내부에서 인스턴스 변수나 메서드 사용 불가
  • 주로 유틸성 메서드 작성에 사용
    java
    public class MathUtil {
        static int square(int n) {
            return n * n;
        }
    }
    
    int result = MathUtil.square(5);  // 객체 없이 호출 가능
    public class MathUtil {
        static int square(int n) {
            return n * n;
        }
    }
    
    int result = MathUtil.square(5);  // 객체 없이 호출 가능

🧨 static 초기화 블록

  • 클래스가 처음 로딩될 때 한 번 실행됨
  • 복잡한 static 변수 초기화 시 사용
    java
    static {
        // static 변수 복잡 초기화 가능
    }
    static {
        // static 변수 복잡 초기화 가능
    }

⚠️ static 사용 시 주의할 점

  • 남용하면 객체지향 원칙(캡슐화, 추상화 등) 훼손 위험
  • 상태(state)를 static에 저장하면 테스트와 동시성 처리 어려움
  • 필요할 때만 제한적으로 사용 → 대표 예: 상수(static final), 유틸리티 클래스

💡느낀 점 / 참고 사항

  • static 멤버는 공유가 필요한 값이나 기능에 적합
  • 전역처럼 사용되므로 잘못 쓰면 부작용 발생 가능
  • 객체 없이 사용할 수 있는 점은 편리하지만, 객체지향의 장점을 놓치지 않도록 주의해야 함
공유하기
이전 글TIL - Java 기초: final 키워드와 불변 객체 설계다음 글 TIL - Java 기초: 기본형과 래퍼 클래스 정리

목차

  • 💬 배운 기술 / 지식
  • 🧩 static 이란?
  • 🔗 클래스 변수 vs 인스턴스 변수
  • ⚙️ static 메서드
  • 🧨 static 초기화 블록
  • ⚠️ static 사용 시 주의할 점
  • 💡느낀 점 / 참고 사항

카테고리

Docs

태그

#Java#TIL

최근 글

Git 요약 (1) - Rebase, Stash, Squash MergeTIL - MSA 핵심 요소 정리TIL - (4) Spring 어노테이션 정리: Mockito를 활용한 단위 테스트TIL - (3) Spring 어노테이션 정리: Lombok Getter, Setter와 생성자TIL - (2) Spring MVC와 WebFlux의 차이: 블로킹과 논블로킹