[JAVA] static, final, static final 이게 뭐야? 왜 써?

곽동현·2023년 10월 29일
0

1) ❓ 글을 쓰게 된 개요

static / final / static final
자바를 공불하다가, 사람들의 코드를 보다보면(혹은 공부를 하다보면)
이 세가지 용어를 접하게 될 것 이다.

정적이다? 상수화가 된다?
이러한 용어는 나에게 굉장히 추상적이었고, 쉽게 가공하고자 이 글을 쓰게 되었다.


2) ❗ 결론부터


이름내용
static정적은 "고정된"이라는 의미를 가지고 있다. -> 한 개 만들어놓고 여러 곳에서 가져다 쓰기 위해 생성. (값은 바꿀 수 있음)
finalfinal의 의미는 "최종적"이라는 뜻을 갖고 있다. -> 한 번 값이 할당되면 다시는 못바꿈!
static final위 두 개의 의미를 모두 포함한다. -> 한 개 만들어놓고 값을 할당시키면, 여러곳에서 가져다 쓸 수도 있고, 값도 못 바꾼다.

3) ❓ What ? 자세히 설명해줘요.

📌static

static 은 '고정되었다'라고 많이들 표현하지만,
사실 그것보단 '공유한다' 혹은 '공통되었다'라고 표현하고 싶다!

"공용으로 가져다 쓰세요~" 뭐 이런느낌?
변수 하나를 이곳 저곳에서 가져다가 쓸 수 있는 것이다!

static 은 변수말고도 메서드에서도 사용 가능하다!

그럼 이걸 왜 쓸까❓

만일, static 이 없이 게시판 글 관리를 한다고 생각해보자!
A가 글을 하나 써서, A 의 게시글 수와 총 게시글 수는 바뀌어야 할 것이다.

하지만 이처럼 게시판 객체는 각각 따로 관리되기 때문에,
여러 사용자가 혼동되는 일이 발생할 것 이다!

만일 이렇게 맨 처음 static 으로 변수를 선언하고 그 데이터를 공유했다면,
A가 반영할 때 모두에게 반영될 것이다!


📌final

자 그럼 final은 뭘까?

final 은 '최종적', 혹은 '상수','불변'등 표현용어가 많은데
이 역시 나는 "낙장불입 ! " 이라는 표현을 쓰고싶다.

즉, 한 번 값을 정하면 영원히 못바꾼다는 말이다!
(남자가 한 입으로 두 말하기 있어?)

이처럼.. 한 번 정하면(값을 할당하면) 앞으로 절대로 바꿀 수 없는 이름이 되어버리고 만다!
이제 이 개의 이름은 주인이 "스껄"이라고 정했기 때문에.. 죽을 때까지 영원히 스껄이다!



그나저나 개 이름이 "스껄" 이라니... 강아지 입장에서는 너무 슬프지 않겠는가?
걱정은 안해도된다!

만일 이처럼 "선언과 동시에 값을 할당" 해준다면,
그 누구도 이 귀여운 강아지 이름을 바꿀 수 없을 것이다!

📌static final

어느정도 대충 감이 좀 잡혔는가?!
자 그러면 마지막으로 static final이다.

이름만 들어봐도 static 과 final 을 모두 포함하는 내용이라고 볼 수 있겠다!
static 의 공용으로 쓰세유~final 의 낙장불입 ! 이 합쳐진 내용이다.

공용으로 쓰면서.. 바꾸지 않는것.. 그럼 그게 도대체 뭘까?
사용자가 정의하기 나름이겠지만 보통,
무언가 공식처럼 만들 때. 혹은
한번 만들면 이곳저곳 편하게 가져다 쓸 때한다!

4) 마무리

예시를 잘 들었는지는 모르겠다..!
하지만, static 과 final 이 무엇이고 왜 사용하는지를 알아봤으니,
이제 자세히 어떻게 쓰는건지는 직접 코드를 짜보면서 적용해보면 될 것이다!

profile
실패의 경험들을 채워나가기!

0개의 댓글