1. 정적 멤버 선언
정적 멤버는 클래스에 고정된 멤버로 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. 이들을 각각 정적 필드, 정적 메소드라고 부르며 이들은 인스턴스에 속한 멤버가 아니기 때문에 클래스 멤버라고도 불린다. 정적 멤버는 아래 방벙으로 선언할 수 있다.
public class StaticExam {
// 정적 필드 선언: static [타입] [필드명]
static double pi = 3.14;
// 정적 메소드 선언: static [리턴 타입] [메소드 명] (매개변수...) {...}
static double circleArea(int radius) {
double area = pi*radius*radius;
return area;
}
}
위와 같은 정적 멤버들은 인스턴스에 속한 멤버가 아니라 클래스에 속한 멤버이기 때문에 다른 클래스에서 사용할 때 객체를 생성하지 않고 클래스를 import하는 것만으로도 사용가능하다. 즉, 아래와 같이 사용할 수 있다.
public class TestMain {
public static void main(String[] args) {
System.out.println("Pi: "+StaticExam.pi);
System.out.println("Circle's Area (radius 5): "+StaticExam.circleArea(5));
}
}
2. static 블록
정적 필드는 일반적으로 위와 같이 선언과 동시에 초기화를 해주는 것이 일반적이다. 하지만 계산이 필요한 경우 그러지 못할 수도 있다. 이런 경우 static 블록을 사용할 수 있다.
static String frontName="Coding";
static String lastName="Maru";
static String fullName;
// static 블록
static{
fullName = frontName+lastName;
}
3. 정적 메소드의 특징
정적 메소드는 객체가 없어도 실행된다는 특징을 위에서 설명했다. 따라서 우리는 인스턴스에 속하는 필드 혹은 메소드는 사용할 수 없다. 왜냐하면 객체가 없어도 실행될 수 있기 때문에 인스턴스 멤버들을 사용하면 문제가 발생할 것이다. 따라서 정적 메소드에는 this 키워드, 인스턴스 필드, 인스턴스 메소드 등은 사용할 수 없다.
'Java' 카테고리의 다른 글
[Java] Final, Static final (0) | 2023.01.30 |
---|---|
[Java] Singleton (0) | 2023.01.30 |
[Java] Array (0) | 2023.01.30 |
[Java] Date to String & String to Date [SimpleDateFormat] (0) | 2023.01.18 |
[Java] ArrayList (0) | 2023.01.17 |