'static'에 해당되는 글 1건

  1. 2007/06/21 static 멤버와, static final 멤버 적용 테스트( server : Jeus 5.0)
2007/06/21 21:31

static 멤버와, static final 멤버 적용 테스트( server : Jeus 5.0)

1. static , static final

Class 에서 사용하는 static final 일명 상수의 변경 적용 범위를 예제를 통해서 알아봅시다.

Test 할 클래스를 하나 생성하겠습니다.

하나는

public class TestLib {
 public static final String CONST_TEST1 = "Static Final String TEST1";
 public static String CONST_TEST2 = "Static String TEST2";
}


해당 클래스의 변수들을 출력하는 코드를 넣고

Logger.debug("##### Constant Test #####");
Logger.debug("##### Final = " + TestLib.CONST_TEST1 );
Logger.debug("##### Static = " + TestLib.CONST_TEST2 );

실행시키면

##### Constant Test #####
##### Final = Static Final String TEST1
##### Static = Static String TEST2

라고 찍히네요...

그럼 여기서 TestLib 코드를 변경...

public class TestLib {
 public static final String CONST_TEST1 = "Static Final String TEST1_Change";
 public static String CONST_TEST2 = "Static String TEST2_Change";
}

파일을 서버로 다시 업로드 해서 실행시킨 결과

##### Constant Test #####
##### Final = Static Final String TEST1
##### Static = Static String TEST2_Change

여기서 주목할것은 Static 변수에 해당하는 값이 바껴서 출력된다는것.

그리고 Jeus 서버를 재부팅 하겠습니다.

그리고 같은 코드를 다시 실행 한 결과는

##### Constant Test #####
##### Final = Static Final String TEST1
##### Static = Static String TEST2_Change

동일한 결과가 나옵니다.
static final String은 서버를 재 부팅하더라도 값이 변함없다는 얘기...

여기서 테스트를 위해 작성한 클래스를 재 컴파일 해줍니다.

Logger.debug("##### Constant Test #####");
Logger.debug("##### Final = " + TestLib.CONST_TEST1 );
Logger.debug("##### Static = " + TestLib.CONST_TEST2 );

그리고 나서 실행 하면

##### Constant Test #####
##### Final = Static Final String TEST1_Change
##### Static = Static String TEST2_Change

값이 변경되어서 나오게 됩니다.

즉, static final 일경우는 물고 있는 클래스가 재 컴파일 되어야 변경된 겂이 적용된다는 것입니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0