Static은 정적이라는 뜻이며 '고정된'이라는 뜻을 가지고 있다.
Static 키워드를 사용하여 변수와 메소드를 만들 수 있다.
(이것들을 사용한 것을 정적필드, 정적메소드 라고 함,, 이 둘을 더한 뜻이 클래스멤버임)
정적필드와 정적메소드는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버이기 때문에 호출 시 따로 객체를 부를 필요가 없다.
(프로그램 실행 시 Static 영역의 메모리에 올라가기 때문)
그렇기에 static을 과사용 하게되면 성능에 악영향을 줄 수 있다.
class met{
static void print() {
System.out.println("스태틱 메소드");
}
void print(){
System.out.println("메소드");
}
}
public class Static_met{
pubic static void main(String[] args) {
Name.print();
Name name=new Name();
name.print2();
}
}
static이 전역변수 생성 시 앞에 있으면 그냥 클래스명.전역변수 이런식으로 호출이 되지만
static 이 없는 전역변수에서는 main창에서 호출시 객체명.전역변수를 사용해야함
static 메소드는 인스턴스 메소드를 이용할 수 없다.
필드나 메소드 만들 때 인스턴스로 생성할건지 static(정적)으로 생성할건지에 대한 판단기준은 공용으로 사용하냐 아니냐에 따라 다름!!
그냥 생성하면 자동으로 인스턴스로 생성되고 static으로 생성하려면 static을 붙이면 된다.
static 변수는 public static final로 사용됨