public static void sum(int left, int right) {
System.out.println(left+right);
}
위의 코드를 보면, sum이라는 메소드는 static이라는 키워드를 달게 되면, sum은 클래스 소속의 메소드가 된다.
public class CalculatorDemo3 {
public static void main(String[] args) {
Calculator3.sum(10, 20);
Calculator3.avg(10, 20);
Calculator3.sum(20, 40);
Calculator3.avg(20, 40);
}
}
static이 붙어있는 클래스 메소드는 static이 붙어있지 않은 메소드와 다르게 클래스에 접근하여 직접적으로 실행할 수 있다.
위의 코드를 보면, Calculator3라는 클래스에 직접적으로 접근하여 sum이 실행된다.
이는 메모리와 코드를 절약할 수 있게 도와준다.
class C1{
static int static_variable = 1;
//static이 붙어있으므로 클래스 변수
int instance_variable = 2;
// static이 없으므로 인스턴스 변수
static void static_static(){
// 클래스 메소드가 클래스 변수를 호출하고 있을때
System.out.println(static_variable);
}
static void static_instance(){
//static 클래스 메소드가 인스턴스 변수에 접근하는 경우에 어떻게 될것인가.
// 클래스 메소드에서는 인스턴스 변수에 접근 할 수 없다.
//System.out.println(instance_variable);
}
void instance_static(){
// 인스턴스 메소드에서는 클래스 변수에 접근 할 수 있다.
System.out.println(static_variable);
}
void instance_instance(){
System.out.println(instance_variable);
}
}
마지막 용어정리를 하자면,
인스턴스 변수는 Non-static Field라고 하고,
클래스 변수는 Static Field라고 한다.