Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 깡돼후
- ErrorResponse
- preemption #
- 자원부족
- PersistenceContext
- PytestPluginManager
- table not found
- JanusWebRTC
- 겨울 부산
- 코루틴 빌더
- VARCHAR (1)
- vfr video
- kotlin
- JanusGateway
- JanusWebRTCServer
- 코루틴 컨텍스트
- Value too long for column
- tolerated
- 달인막창
- terminal
- Spring Batch
- python
- addhooks
- 개성국밥
- RouteLocator
- taint
- JanusWebRTCGateway
- gitflow-shFlags
- mp4fpsmod
- pytest
Archives
너와 나의 스토리
[Java] Static field의 복잡한 초기화 작업을 위한 정적 블록(Static block) 본문
Programming Language/Java
[Java] Static field의 복잡한 초기화 작업을 위한 정적 블록(Static block)
노는게제일좋아! 2021. 4. 7. 22:15반응형
Static Block
- Static field는 보통 선언과 동시에 초기값을 준다.
- 예: static double pi = 3.14159;
- 하지만 초기값으로 주려는 값이 복잡한 계산이 필요한 경우가 있다.
- 예: info
public class Television {
static String company = "Samsung";
static String model = "LCD";
static String info = company + '-' + model;
}
- 이런 경우 static block에서 초기화를 진행할 수 있다.
- Static block은 클래스가 메모리로 로딩될 때 자동적으로 실행된다.
public class Television {
static String company = "Samsung";
static String model = "LCD";
static String info;
static {
info = company + '-' + model;
}
}
- Static block에는 static field와 method만 초기화할 수 있다.
- 인스턴스 필드&메서드를 초기화하려고 시도하면 컴파일 에러가 발생한다.
public class ClassName{
int field1;
void method1(){};
static int field2;
static void method2(){};
static {
// field1 = 10 -> compile error
// method1(); -> compile error
field2 = 10;
method2();
}
}
- Static method와 block에서 인스턴스 멤버를 사용하고 싶다면 다음과 같이 객체를 먼저 생성하고 참조 변수로 접근해야 한다.
public class ClassName{
int field1;
void method1(){};
static int field2;
static void method2(){};
static {
field2 = 10;
method2();
}
static void method3(){
ClassName obj = new ClassName();
obj.field1 = 10;
obj.method1();
}
}
- main() 메서드도 static method이므로 동일한 규칙이 적용된다.
public class ClassName{
int field1;
void method1(){};
static int field2;
static void method2(){};
static {
field2 = 10;
method2();
}
public static void main(String[] args){
ClassName obj = new ClassName();
obj.field1 = 10;
obj.method1();
}
}
출처:
- [이것이 자바다]
반응형
'Programming Language > Java' 카테고리의 다른 글
[Java] 어노테이션(Annotation) 만들고 적용하는 방법 (0) | 2021.04.07 |
---|---|
[Java] 싱글톤(Singleton)을 만들자! (0) | 2021.04.07 |
[Java 기초부터 다시] 4. 데이터 - 참조 타입/JVM/Enum (0) | 2021.04.07 |
[Java 기초부터 다시] 3. 조건문과 반복문 (0) | 2021.04.04 |
[Java 기초부터 다시] 2. 변수 / 연산자와 연산식 (0) | 2021.03.24 |
Comments