
안녕하세요. 이번에는 자바의 중요한 개념 중 하나인
스태틱(static)과 인스턴스(instance)의 차이점을 알아볼 거예요.
처음에는 혼란이 올 수 있지만, 조금씩 익숙해지면 객체지향 프로그래밍이 훨씬 명확해지니
천천히 하나씩 알아볼게요!
statc
스태틱은 클래스가 메모리에 올라갈 때 한 번만 생성되는 친구예요.
객체 없이도 사용 가능하고, 모든 객체가 같은 값을 공유해 줘요.
public class MathTool {
public static int count = 0; // static 변수
public static void increase() { // static 메서드
count++;
}
}
// 사용
MathTool.increase();
MathTool.increase();
System.out.println(MathTool.count); // 2
이렇게 코드화면을 보시면 객체를 만들지 않아도 MathTool.count로 접근 가능하고,
모든 호출이 같은 count 값을 공유하는 걸 볼 수 있어요.
instance
인스턴스는 객체를 생성할 때마다 따로 만들어진답니다.
각각의 객체가 자기만의 값을 가지고, 사용하려면 객체를 먼저 생성해야 해요!
public class Person {
String name; // 인스턴스 변수
public void sayHello() { // 인스턴스 메서드
System.out.println("Hi, I'm " + name);
}
}
// 사용
Person p1 = new Person();
p1.name = "Alice";
Person p2 = new Person();
p2.name = "Bob";
p1.sayHello(); // Hi, I'm Alice
p2.sayHello(); // Hi, I'm Bob
코드를 보시면 name은 p1과 p2 각각 따로 가지는 걸 볼 수 있답니다.
간단하게 스태틱과 인스턴스의 차이점을 알아봤는데요.
한 줄로 요약을 한다면
스태틱은 클래스에 속한 것을 모든 객체가 공유하는 친구
인스턴스는 객체에 속한 것을 객체마다 개별 소유할 때 사용해요!

이렇게 알아봤는데요. 비슷한 것 같으면서 전혀 다른 친구들이라는 걸 알아볼 수 있었답니다.
'Backend > Java' 카테고리의 다른 글
| 상속과 구현(extends VS implements) (1) | 2025.07.12 |
|---|---|
| 인터페이스와 추상화 클래스(interface VS abstract class) (0) | 2025.07.12 |
| 접근제한자(Access Modifiers) (1) | 2025.07.12 |
| 업캐스팅과 다운캐스팅 (2) | 2025.07.11 |
| 오버라이딩과 오버로딩 (0) | 2025.07.08 |