티스토리 뷰
클로드ai가 말하기로는 자바 개발자들이 가장 많이 생각하는 고민이라고한다. 나 역시 아직 자바초짜인데도 벌써 이런 고민을 하고 있다.
구체적인 기준이 있지는 않지만, 꼭 고려해야한다고 생각하는 요소가 있다고 생각해서 이 글을 쓰게된다.

결론부터 정리하면 이 사진과 같다. 간단하게 말하자면,
메서드가 "상태"를 저장, 변경하는 기능을 하는 경우 → Instance,
메서드가 // 기능을 하지 않는 경우 (즉, 일회성 사용, 단순 검증 ) → Static
여기서, 사용 기준에서 나는 "상태"를 자장, 변경하는지 여부를 중요하게 생각한다.
□ Instance 예시 - 게임 캐릭터 설정 )
public class GameCharacter {
// 게임 캐릭터가 기억해야 할 상태들
private String name;
private int level = 1; // 📈 레벨 (올라감!)
private int hp = 100; // ❤️ 체력 (변함!)
private int exp = 0; // ⭐ 경험치 (쌓임!)
private int x = 0, y = 0; // 📍 위치 (움직임!)
public void attack(GameCharacter target) {
target.hp -= 10; // 상대 체력 감소
this.exp += 5; // 내 경험치 증가
System.out.println(name + "이(가) 공격! 경험치: " + exp);
}
public void move(int newX, int newY) {
this.x = newX; // 위치 상태 변경!
this.y = newY;
}
}
이렇듯, Instance는 상태를 저장해야하는 경우에 사용한다.
반면, Static은 그렇지 않다.
□ Static 예시 - 계산 도구 메서드 )
public class MathUtils {
// "단순 계산 도구들" - 아무것도 기억 안함!! ( 상태 저장 XX )
public static int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1); // 계산만 하고 끝!
}
public static boolean isPrime(int number) {
if (number < 2) return false;
for (int i = 2; i <= Math.sqrt(number); i++) {
if (number % i == 0) return false;
}
return true; // 판단만 하고 끝!
}
}
---------------
결론적으로 상태를 저장하냐/일회성 사용이냐의 문제인 것같다 !!
😅🙄😶😮
'Java' 카테고리의 다른 글
| 자바 - 메서드에서 " return null; " 의 의미 (2) | 2025.08.15 |
|---|---|
| 자바 - 메서드 안(지역 변수)에서는 접근 제어자(public/private/protected와 static을 붙일 수 없음. (3) | 2025.08.15 |
| 자바 - 참조형 타입 확인 예제 (2) | 2025.08.12 |
| 자바 - JVM 메모리 구조 총 정리 ( 예제로 이해하자!! ) (2) | 2025.08.12 |
| 자바 - 같은 클래스 내부에서 선언된 매서드끼리 호출하기 (1) | 2025.08.12 |