티스토리 뷰

반응형

출처 DefineJava

정적 변수를 선언하는 방법


static을 이용하여 정적 변수를 선언할 떄 대부분 어떻게 사용하는가?

public class StaticTest
{
 private static int SIZE= 10;
 private static int[] myStatic = new int[SIZE];
}

대부분 이렇게 사용할 것이다.

myStatic이라는 배열을 만들었다. 그렇다면 이 myStatic에 값을 할 당할때 어떻게들 사용하는가?
myStatic은 배열이다. 배열에 값을 할당 할때 과연 어떻게 할 수 있을까?(반복문을 이용하는 방법중)
생성자를 만드는 방법도 있을것이고 메인메소드나 기타메소드에서 값을 할당 받는경우도 있다.
가장 쉽게 생각한 방법이 다음과 같은 두가지 방법일 것이다.

ex1)

more..

ex2)

more..



ex1같은 경우 main 메소드 같은 곳에서 처음 한번만 초기화 값을 넣는 방법과 ex2처럼 생성자를 만들어 객체를 생성하게 하여 사용하는 방법이 있을 것이다.
(필자는 두가지 방법밖에 몰랐었다. 하긴 지금은 몇가지를 더 알고 있으니깐 이글을 쓰는거겠지만...;;)

ex1 같은 경우를 보자! 일반 Application에서는 main메소드를 호출 하기 때문에 단 1번만 호출되면서 값이 활당된다. 그렇다면 웹어플리케이션에서는 어떨까?
당연히 힘들다.(불가능 한것은 아니다. init가 있기 때문에) web.xml을 수정하여하고 이래저래 복잡하다.
ex2 같은경우를 보자! 이와 같은 방법은 객체를 생성하여야 한다. 객체 생성으로 그만큼의 공간을 잡아 먹는 샘이다. 불필요한 공간을 계속 잡고 있을 테니 조금 문제가 될수있다.

두가지의 문제점을 해결 할 수 있는 방법이 필자가 소개할려고 하는 ex3 이다.
아는 사람도 많이 있겠지만 모르는 사람도 많을 것 같다.

바로 static block을 이용하는 방법이다. ex3을 보도록 하자!
ex3)

more..


ex3을 보면 static 블럭에 의해서 값들이 초기화 된다. 즉 객체 생성도 필요없고 특정 메소드에서 호출 할 필요도 없다는것이다.
이해가 잘 안된다면 static의 생성자 개념이라고 생각하면 될것이다. 물론 생성자는 아니다. 그냥 생각만 그렇게 하라는것이다.

오랜만에 강좌를 쓰다보니 앞뒤가 하나도 안 맞게 되었다. 다음에는 더 좋은 내용을 적어보도록해야겠다^ㅡ^

반응형
댓글