티스토리 뷰

클로드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;  // 판단만 하고 끝!
    }
}

 

 

---------------

 

결론적으로 상태를 저장하냐/일회성 사용이냐의 문제인 것같다 !! 

😅🙄😶😮

 

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함