[Java] 클래스 메소드(static 메소드) vs 인스턴스 메소드

2025. 10. 3. 15:57·Java

static 메소드란?

  • 메소드 앞에 static가 붙은 메소드이다.
  • 객체 생성 없이 호출이 가능한 메소드

static 메소드와 인스턴스 메소드의 차이는 인스턴스 변수 사용 유무로 나뉜다.

 

  • 인스턴스 메소드
    • 인스턴스 생성 후, '참조 변수.메소드 명()'으로 호출한다.
    • 인스턴스 멤버와 관련된 작업을 한다.
    • 메소드 내에서 인스턴스 변수를 사용할 수 있다.
    • 인스턴스 변수를 이용해서 작업을 하므로 변수의 묶음인 객체를 생성해야 인스턴스 메소드를 호출할 수 있다.
      ex) Exam ex = new Exam(); ex.example = "예시";

 

  • static 메소드(클래스 메소드)
    • 객체 생성 없이 '클래스 명.메소드 명()'으로 호출이 가능하다.
    • 인스턴스 멤버와 관련되지 않은 작업을 한다.
    • 메소드 내에서 인스턴스 변수를 사용할 수 없다.
    • 인스턴스 메소드와 달리 인스턴스 변수가 필요 없으므로 객체를 생성하지 않고도 호출할 수 있다.
      ex) Math.random()

 

그러면 언제 static을 붙이면 좋은가?

메소드의 경우

  • 인스턴스 변수를 사용하지 않는 경우에 static 붙인다.
      int add() { return a + b }  // a와 b는 인스턴스 변수이므로 static을 붙이지 않는다.
      static int add(int a, int b) { return a + b } // a, b는 로컬(지역) 변수이므로 static을 붙인다. 

변수의 경우

  • 속성(변수) 중에서 인스턴스 변수(개별 속성)는, static을 붙이지 않는다.
  • 클래스 변수(공통 속성)는 static을 붙인다.

 

※ 호출의 차이

    • static 메소드는 인스턴스 변수를 호출할 수 없지만 인스턴스 메소드는 static 변수를 호출할 수 있다.
    • static 메소드는 인스턴스 메소드를 호출할 수 없지만 인스턴스 메소드는 static 메소드를 호출할 수 있다.
      왜 static 메소드는 인스턴스 멤버(인스턴스 변수, 인스턴스 메소드)를 사용할 수 없는가?
      -> 인스턴스 메소드를 이용하려면 인스턴스 변수를 사용하므로 객체 생성이 필요하다.
      그러나 static 메소드는 항상 호출이 가능해야하는데, 객체가 있을지 없을지 모르기 때문이다.
    • static 메소드끼리, 인스턴스 메소드끼리는 호출이 가능하다.

 



'Java' 카테고리의 다른 글

[JAVA] 데이터 추상화 vs 제어 추상화  (0) 2025.10.09
[Java] 객체지향개념I  (0) 2025.10.08
[Java] 기본형 매개변수와 참조형 매개변수  (0) 2025.10.03
[Java] Primitive type(원시타입) vs. Reference type(참조타입)  (3) 2025.08.30
[Java] 진법 변환 정리 (n진수 <-> 10진수)  (0) 2025.08.30
'Java' 카테고리의 다른 글
  • [JAVA] 데이터 추상화 vs 제어 추상화
  • [Java] 객체지향개념I
  • [Java] 기본형 매개변수와 참조형 매개변수
  • [Java] Primitive type(원시타입) vs. Reference type(참조타입)
싹난 감자🥔🌱
싹난 감자🥔🌱
개발 블로그
  • 싹난 감자🥔🌱
    감자에 싹이나서 잎이나서
    싹난 감자🥔🌱
  • 전체
    오늘
    어제
    • 분류 전체보기 (43)
      • Spring (3)
      • Java (17)
      • LLM (1)
      • DevOps (4)
      • Algorithm (14)
        • 백준 (4)
        • 프로그래머스 (0)
        • 코드업 (10)
      • Computer Science (3)
        • Operating System (2)
        • Computer Architecture (1)
      • Trouble Shooting 🚀 (0)
      • 회고 & 성장기록 (1)
      • 설계 📐 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    Java
    구간합
    자바Scanner비교
    자바성능
    2차원 배열
    BufferedReader
    docker
    2진수
    비트
    자바BufferedReader
    배포
    코딩테스트
    알고리즘입력
    Scanner
    자바 입력
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
싹난 감자🥔🌱
[Java] 클래스 메소드(static 메소드) vs 인스턴스 메소드
상단으로

티스토리툴바