자바(Java)〃static final과 final의 사용법

반응형

                                                     


자바에서 프로젝트를 만들다 보면 많이 접하게 되는 final은 마지막, 최종적이라는 의미를 가지고 있기 때문에 변수나 메소드의 값을 수정할 필요없이 고정시킬때 많이 사용됩니다.


저는 회원가입을 만들때 자바에서는 아이디와 주민번호 타입앞에 final을 넣는데 SQL에서 Primary Key를 설정해둔것 같이 코딩을 하곤 그랬습니다. 


보통 final 타입 변수명 = "초기값"; (ex : final String Userid = "jihun";)으로 사용하고 이때 초기값을 설정해주지 않았다면 생성자에서 초기값을 설정해서 사용하는게 일반적입니다. 만약에 생성자에서 초기화 해주는 작업을 잊어버렸다면 에러가 발생하기 때문에 주의하는게 좋습니다.



변수에서 final을 사용하는 경우

final은 변수나 상수에서 선언할때 같이 사용하게 되는데 그 중 변수 선언시 사용되는 final에 대해서 알아보려고 합니다. 이 두가지는 알고보면 정말 간단한 차이점을 가지고 있으니 아래에서 정리해볼게요.


회원가입에서 이름과 아이디, 비밀번호, 주소를 예문으로 들어보았는데요. 한번 입력받고 더이상 값을 변경할 필요가 없는 이름과 아이디는 final을 넣어 더이상 변경하지 못하도록 하는것이라 생각하면 됩니다. 


실제로 회원가입 프로젝트를 만들때는 일일이 final을 넣지 않고 SQL구문에서 제약조건을 걸어버리지만 빠른 이해를 위해서 적용해봤습니다. 나중에 실무에 투입되어 final이 어떨때 사용될지 긴글을 읽고 이해하기보다 아하 이런 경우에 사용되는구나라고 한눈에 알아보기 위함이죠.



 상수에서 final은 무조건 static(정적필드)와 같이 사용된다.

상수에서 값을 재정의하고 싶지 않을때는 앞에 static을 붙여 사용한다 이것 하나만 기억하시면 됩니다. staitc을 포함하여 선언한 변수는 객체가 아니라 클래스에 속한다라는 의미를 가지고 있으며 여러개 객체를 가지지 않을 것이고 변수가 하나만 존재한다라는 뜻도 가지고 있습니다. 


사실 자바에서 상수라는게 더이상 수정이 불가능한것을 뜻하기도 해서 위에서 언급한 변수앞에 final을 붙인걸 상수라고 할수도 있지만 final String name = " jihun ";은 지훈말고 철수나, 영희, 짱구 이런식으로 객체마다 여러가지 값을 가질 수 있기 때문에 상수로 부르지 않는다고 합니다.  


그렇기때문에 staic을 붙인 final은 객체마다 불변의 값을 가지고 있는 원주율(3.14…)과 같이 공통적으로 정의되어 값을 변경해서는 안되는 그런 상수를 말하는것이죠. 


차이점이 바로 보이시나요?? 아이디와 이름과 달리 원주율과 산소의 질량, 1년과 1주일은 누구나 다 알고 있는 변하지 않는 상수의 값을 가지고 있습니다. 이런 값들은 static을 꼭 추가해서 객체마다 저장되지 않고 초기값을 한번 설정해주면 변경되지 않도록 해야겠네요.


더 응용해서 만들어 보고 싶지만 글재주가 없어서... 지금은 단순히 취업하기전 정리 목적으로 작성하는것이라 나중에 취업후 경력이 생기면 나아지지 않을까 생각하고 있습니다.

반응형