static
이란 정적이다 라는 의미를 갖고 있다.
Java에서는 클래스에 고정된 멤버이다. 그래서 클래스를 로딩 하면 메모리에 바로 할당 시켜 준다.
static
은 전역적으로 쉽게 재사용하는 멤버나 잘 변하지 않는 변수, 메소드를 사용할 때 주로 사용 된다.
클래스 호출, 객체 생성을 따로 할 필요 없이 바로바로 호출해서 사용할 수 있기 때문에 사용성이 좋다.
class Number{
static int num = 0; //클래스 필드
int num2 = 0; //인스턴스 필드
}
public class Static_ex {
public static void main(String[] args) {
Number number1 = new Number(); //첫번째 number
Number number2 = new Number(); //두번쨰 number
number1.num++; //클래스 필드 num을 1증가시킴(static)
number1.num2++; //인스턴스 필드 num을 1증가시킴
//두번째 number의 클래스 필드 출력 (static)
//출력값 1
System.out.println(number2.num);
//두번째 number의 인스턴스 필드 출력
//출력값 0
System.out.println(number2.num2);
}
}
class Name{
static void print() { //클래스 메소드
System.out.println("print_test!");
}
void print2() { //인스턴스 메소드
System.out.println("print_test!!!!!!!!!");
}
}
public class Static_ {
public static void main(String[] args) {
Name.print(); //인스턴스를 생성하지 않아도 바로 호출이 가능
Name name = new Name(); //인스턴스 생성
name.print2(); //인스턴스를 생성하여야만 호출이 가능
}
}
But, static은 메모리 자원을 할당 해놓고 사용하는 것이기 때문에 남용 한다면 메모리를 많이 차지하게 되어 프로그램이 무거워 질 수 있다.