본문 바로가기
개발/Java

[Java] static, final 에 대해 차근차근 알아보자!

by 쓸있쏜 2024. 11. 25.

staticfinal, 자바의 마법 같은 친구들 이야기

안녕! 자바라는 언어랑 친해지고 싶은 너에게 오늘은 아주 특별한 두 친구를 소개해 줄게. 이름은 staticfinal이야. 얘네는 성격도 다르고, 역할도 다르지만, 잘 알고 나면 정말 유용한 친구들이야. 복잡한 얘기는 잠시 접어두고, 차근차근 알아보자.


static: "모두랑 같이 나누는 걸 좋아해!"

static은 마치 우리 반 교실에 있는 큰 칠판 같아. 누가 쓰든, 뭘 쓰든 다 같이 볼 수 있고, 다 같이 쓸 수도 있어. 자바에서도 비슷한 일을 해주는 키워드야.

public class StaticExample {
    public static int counter = 0;

    public static void increment() {
        counter++;
    }
}

public class Main {
    public static void main(String[] args) {
        StaticExample.increment();
        StaticExample.increment();
        System.out.println(StaticExample.counter); // 결과: 2
    }
}

여기에서 counter는 static으로 선언됐지? 그래서 누가 이 값을 바꿔도 모두가 바뀐 값을 볼 수 있어. 이렇게 하면 어떤 데이터가 필요한 사람들에게 다 같이 공유할 수 있게 돼.

static이 좋은 점

  • 객체를 안 만들어도 돼! 그냥 클래스 이름만 쓰면 바로 접근할 수 있거든.
  • 공유가 간단해! 모든 곳에서 같은 데이터를 쓸 수 있으니까 편리하지.

하지만 조심해야 해. 너무 많이 공유하면 문제가 될 수 있거든. 예를 들어, 칠판에 아무나 마구잡이로 낙서를 하면 혼란스럽겠지? 그러니까 필요한 곳에서만 딱 쓰는 게 좋아.


final: "내 마음은 이미 정해졌어!"

final은 조금 더 신중한 친구야. "내가 한 번 정한 건 절대 바꾸지 않을 거야!"라고 딱 선언하는 친구지. 변하지 않는 걸 좋아하는 성격이랄까?

public class FinalExample {
    public final int fixedValue = 42;

    public void changeValue() {
        // fixedValue = 100; // 컴파일 에러 발생!
    }
}

여기서 fixedValue는 한 번 값이 정해지면 절대로 바꿀 수 없어. 누군가가 바꾸려고 하면 자바가 "그건 안 돼!"라고 막아버리지.

final이 좋은 점

  • 한 번 정해지면 바뀌지 않으니까 믿음직스러워!
  • 상수처럼 쓸 수 있어서 코드가 깔끔해!

예를 들어, "원주율은 절대로 3.15로 바뀔 수 없어!"라고 선언하고 싶다면, 딱 final로 지정하면 돼.


staticfinal, 둘이 만나면?

이제 이 둘이 만나면 무슨 일이 생기는지 궁금하지? 바로 "공용 상수"라는 특별한 존재가 탄생해. 모두가 볼 수 있지만, 아무도 바꿀 수 없는 친구지. 예를 들면 이런 거야:

public class Constants {
    public static final double PI = 3.14159;
    public static final String APP_NAME = "MyCoolApp";
}

여기서 PI는 원주율인데, 모두가 필요로 하지만 절대 바뀌어서는 안 되는 값이야. 그러니까 static final로 선언하면 "모두가 공유하고, 바꾸지 않는 값"을 만들 수 있어.


staticfinal의 차이점, 그리고 공통점

얘네 둘은 성격이 참 달라.

  • static은 "모두가 공유할 수 있게 해 줄게!"라고 말하고,
  • final은 "내가 정한 건 절대 바꾸지 않아!"라고 말하지.

하지만 둘이 합쳐지면, "모두가 공유하면서도 절대 바꾸지 못하는 값"을 만들어 내. 마치 학교의 교훈처럼 말이야. "바꿀 수는 없지만, 모두에게 중요한 것!"


재미있게 써 보는 static과 final

개발을 하다 보면 staticfinal은 마치 우리를 돕는 마법 도구 같아.

  • 뭔가를 모두와 나누고 싶을 땐 static을,
  • 뭔가를 확실히 고정하고 싶을 땐 final을 쓰면 돼.

이 두 친구를 잘 알고 있으면, 자바라는 세계에서 더 멋진 일을 할 수 있을 거야! 그러니 너무 어렵게 생각하지 말고, 자꾸 써 보면서 익숙해지자. 우리도 친구랑 놀다 보면 성격을 더 잘 알게 되잖아?

댓글