[Java - 생활코딩] Static은 무엇일까

Jean·2025년 7월 1일

[생활코딩]

목록 보기
4/8

💎 Static?

✅ static이 붙은 변수나 메서드는 인스턴스(객체) 없이 클래스 자체의 소속
✅ static이 없는 건 객체가 생성되어야만 사용할 수 있는 인스턴스 소속

🐶 코드 예시

class Dog {
    String str; // 인스턴스 변수

    public static void bark1(String s) {
        System.out.println(s);
    }

    public void bark2() {
        System.out.println(this.str);
    }
}

public class Main {
    public static void main(String[] args) {
        // 클래스 메서드는 객체 없이 바로 호출 가능
        Dog.bark1("woof"); // OK

        // 객체 없이 인스턴스 메서드 호출은 불가능
        // Dog.bark2(); // ❌ 에러

        // 객체 생성 후 인스턴스 변수, 메서드 접근 가능
        Dog d = new Dog();
        d.str = "woof";
        d.bark2(); // OK

        // d.bark1(); // 가능은 하지만 권장되지 않음 (static은 클래스 이름으로 호출하는 게 명확)
    }
}
  • bark1()은 Dog.bark1("woof")처럼 클래스 이름으로 호출!
  • bark2()는 Dog 객체가 있어야 하므로 d.bark2()처럼 사용해야함!

🔖 static 변수?

static 변수는 모든 객체가 공유하는 하나의 값!
만약 static 없이 변수를 만들면, 각 객체가 자기만의 값을 가진다

class Dog {
    static int count = 0; // 모든 Dog 객체가 공유

    public Dog() {
        count++; // 객체가 만들어질 때마다 증가
    }
}

//count가 static이 아니면 각 Dog마다 count = 1이 됨
//static으로 선언하면 전체 Dog의 생성 수를 셀 수 있다

🧹정리

  • static: 클래스 소속 (공용)

  • 인스턴스 변수/메서드: 객체가 있어야만 사용 가능

  • 클래스 메서드는 클래스명.메서드()로 호출하는 것이 좋음

  • static 변수는 여러 객체가 공유해야 할 값에 사용

profile
햇내기 개발자 지망생

0개의 댓글