static과 final, 자바의 마법 같은 친구들 이야기
안녕! 자바라는 언어랑 친해지고 싶은 너에게 오늘은 아주 특별한 두 친구를 소개해 줄게. 이름은 static과 final이야. 얘네는 성격도 다르고, 역할도 다르지만, 잘 알고 나면 정말 유용한 친구들이야. 복잡한 얘기는 잠시 접어두고, 차근차근 알아보자.
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로 지정하면 돼.
static과 final, 둘이 만나면?
이제 이 둘이 만나면 무슨 일이 생기는지 궁금하지? 바로 "공용 상수"라는 특별한 존재가 탄생해. 모두가 볼 수 있지만, 아무도 바꿀 수 없는 친구지. 예를 들면 이런 거야:
public class Constants {
public static final double PI = 3.14159;
public static final String APP_NAME = "MyCoolApp";
}
여기서 PI는 원주율인데, 모두가 필요로 하지만 절대 바뀌어서는 안 되는 값이야. 그러니까 static final로 선언하면 "모두가 공유하고, 바꾸지 않는 값"을 만들 수 있어.
static과 final의 차이점, 그리고 공통점
얘네 둘은 성격이 참 달라.
- static은 "모두가 공유할 수 있게 해 줄게!"라고 말하고,
- final은 "내가 정한 건 절대 바꾸지 않아!"라고 말하지.
하지만 둘이 합쳐지면, "모두가 공유하면서도 절대 바꾸지 못하는 값"을 만들어 내. 마치 학교의 교훈처럼 말이야. "바꿀 수는 없지만, 모두에게 중요한 것!"
재미있게 써 보는 static과 final
개발을 하다 보면 static과 final은 마치 우리를 돕는 마법 도구 같아.
- 뭔가를 모두와 나누고 싶을 땐 static을,
- 뭔가를 확실히 고정하고 싶을 땐 final을 쓰면 돼.
이 두 친구를 잘 알고 있으면, 자바라는 세계에서 더 멋진 일을 할 수 있을 거야! 그러니 너무 어렵게 생각하지 말고, 자꾸 써 보면서 익숙해지자. 우리도 친구랑 놀다 보면 성격을 더 잘 알게 되잖아?
'개발 > Java' 카테고리의 다른 글
[Java&Javascript] 문자를 byte 로 계산하는 함수는 이렇게 만들어요. (1) | 2024.11.27 |
---|---|
[Java] List 에 대해 모든 것을 알아보고 비교해보자!! (1) | 2024.11.26 |
[Java] Java 에서 Field 클래스에 대해 알아보자. (3) | 2024.11.25 |
[Java] Java 에서 HashMap이란 무엇인가? 사용법도 알아보자! (1) | 2023.05.10 |
[Java] Java에서 프로그램 개발할 때 Resouce leak(리소스 누수)를 방지하는 방법을 알아보자. (0) | 2023.03.15 |
댓글