자바

JAVA 자바 정적 멤버와 static - 정적 멤버 선언, 정적 멤버 사용, 정적 초기화 블록

알통몬_ 2017. 3. 12. 19:22
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

정적 멤버와 static 

클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메서드를 말합니다. 

정적 필드, 정적 메서드라고 부르며 정적 멤버는 클래스에 소속된 멤버이기 때문에 클래스 멤버라고도 합니다.


정적 멤버의 선언

 정적 필드와 정적 메서드를 선언하는 방법 : 필드와 메서드 선언 시 static 키워드를 붙이면 됩니다.

    static 타입 필드 [= 초기값];

    static 리턴 타입 메서드(매개변수선언,...) { ... }


필드를 선언할 때 객체마다 가지고 있어야 할 데이터라면 인스턴스 필드로 선언하고, 

객체마다 가지고 있을 필요성이 없는 공용적인 데이터라면 정적필드로 선언하는 것이 좋습니다.

public class Calculator {

           String color;  // 사람마다 좋아하는 색이 다르다.

           static double pi = 3.14159; // 수학에서 사용하는 파이 값은 동일합니다.

}

정적 멤버 사용

 클래스이름과 함께 도트 연산자로 접근합니다. 

클래스.필드;   

클래스.메서드(매개값,...);


public class Calculator {

           String color;  // 사람마다 좋아하는 색이 다르다.

           static double pi = 3.14159; // 수학에서 사용하는 파이 값은 동일합니다.

}

double num = Calculator.pi;




정적 초기화 블록
정적 필드는 필드 선언과 동시에 초기값을 주는 것이 일반적입니다.
계산이 필요한 초기화 작업이 있을 수도 있습니다. 
정적 필드는 객체 생성 없이 사용해야 하므로 생성자에서 초기화 작업을 할 수 없습니다. 
정적 필드의 복잡한 초기화 작업을 위해서 정적 블록을 제공합니다.
static {
      ......
}
정적 블록은 클래스 내부에서 여러 개가 선언되도 상관없습니다. 클래스가 메모리로 로딩될 때 선언된 순서대로 실행합니다.

예제1)
public class Television {
static String company = "Samsung";
static String model = "LCD";
static String info;
static {
info = company + "-" + model;
}
}
 
예제2)

public class TelevisionExample {
public static void main(String[] args) {
System.out.println(Television.info);
}
}


반응형