static / final / static final
자바를 공불하다가, 사람들의 코드를 보다보면(혹은 공부를 하다보면)
이 세가지 용어를 접하게 될 것 이다.정적이다? 상수화가 된다?
이러한 용어는 나에게 굉장히 추상적이었고, 쉽게 가공하고자 이 글을 쓰게 되었다.
이름 | 내용 |
---|---|
static | 정적은 "고정된"이라는 의미를 가지고 있다. -> 한 개 만들어놓고 여러 곳에서 가져다 쓰기 위해 생성. (값은 바꿀 수 있음) |
final | final의 의미는 "최종적"이라는 뜻을 갖고 있다. -> 한 번 값이 할당되면 다시는 못바꿈! |
static final | 위 두 개의 의미를 모두 포함한다. -> 한 개 만들어놓고 값을 할당시키면, 여러곳에서 가져다 쓸 수도 있고, 값도 못 바꾼다. |
static 은 '고정되었다'라고 많이들 표현하지만,
사실 그것보단 '공유한다' 혹은 '공통되었다'라고 표현하고 싶다!"공용으로 가져다 쓰세요~" 뭐 이런느낌?
변수 하나를 이곳 저곳에서 가져다가 쓸 수 있는 것이다!
static 은 변수말고도 메서드에서도 사용 가능하다!
그럼 이걸 왜 쓸까❓
만일, static 이 없이 게시판 글 관리를 한다고 생각해보자!
A가 글을 하나 써서, A 의 게시글 수와 총 게시글 수는 바뀌어야 할 것이다.
하지만 이처럼 게시판 객체는 각각 따로 관리되기 때문에,
여러 사용자가 혼동되는 일이 발생할 것 이다!
만일 이렇게 맨 처음 static 으로 변수를 선언하고 그 데이터를 공유했다면,
A가 반영할 때 모두에게 반영될 것이다!
자 그럼 final은 뭘까?
final 은 '최종적', 혹은 '상수','불변'등 표현용어가 많은데
이 역시 나는 "낙장불입 ! " 이라는 표현을 쓰고싶다.즉, 한 번 값을 정하면 영원히 못바꾼다는 말이다!
(남자가 한 입으로 두 말하기 있어?)
이처럼.. 한 번 정하면(값을 할당하면) 앞으로 절대로 바꿀 수 없는 이름이 되어버리고 만다!
이제 이 개의 이름은 주인이 "스껄"이라고 정했기 때문에.. 죽을 때까지 영원히 스껄이다!
그나저나 개 이름이 "스껄" 이라니... 강아지 입장에서는 너무 슬프지 않겠는가?
걱정은 안해도된다!
만일 이처럼 "선언과 동시에 값을 할당" 해준다면,
그 누구도 이 귀여운 강아지 이름을 바꿀 수 없을 것이다!
어느정도 대충 감이 좀 잡혔는가?!
자 그러면 마지막으로 static final이다.
이름만 들어봐도 static 과 final 을 모두 포함하는 내용이라고 볼 수 있겠다!
즉 static 의 공용으로 쓰세유~ 와 final 의 낙장불입 ! 이 합쳐진 내용이다.
공용으로 쓰면서.. 바꾸지 않는것.. 그럼 그게 도대체 뭘까?
사용자가 정의하기 나름이겠지만 보통,
무언가 공식처럼 만들 때. 혹은
한번 만들면 이곳저곳 편하게 가져다 쓸 때한다!
예시를 잘 들었는지는 모르겠다..!
하지만, static 과 final 이 무엇이고 왜 사용하는지를 알아봤으니,
이제 자세히 어떻게 쓰는건지는 직접 코드를 짜보면서 적용해보면 될 것이다!