[Java] static 변수와 staic 메소드

성채원·2024년 2월 3일

static 변수

  • 클래스 변수
  • 한 클래스에서 공통적인 값을 유지해야할때 선언한다.
  • 메모리에 고정적으로 할당된다.
  • 객체 생성 없이 사용할 수 있다.
public class Main {
 
    public void print(){
        System.out.print("이게 실행될까요");
    }
 
    public static void main(String[] args){
        print();
    }
}

이거는 print 메소드는 static 메소드가 아니기 때문에 Main이라는 객체가 생성되어야 실행됨.

public class Main {
 
    public void print(){
        System.out.print("이게 실행될까요");
    }
 
    public static void main(String[] args){
        Main main = new Main();
        main.print();
    }
}

이렇게 해야 실행되는데 static을 사용하면

public class Main {
 
    public static void print(){
        System.out.print("이게 실행될까요");
    }
 
    public static void main(String[] args){
        print();
    }
}

print 메소드는 저렇다고 딱!! 고정해놓은 것. 그래서 객체를 안 만들고 바로 부를 수 있는거임.


static 메소드

  • static 변수는 static 메소드만 참조될 수 있음.
  • non-static 변수는 객체를 만들어야만 참조될 수 있음. ```
public class Class14 {
    int a;
    static void setA(int b) {
        a=b;
    }

    public static void main(String[] args) {
        Class14.setA(10);
    }
}

a는 static 변수가 아니므로 main 메소드에 참조될 수 없다.

package ThinkingJAVA;

public class Class15 {
    static int a;
    static void hello() {
        System.out.println("안녕~~~");
    }
    static void setA(int b) {
        a=b;
        hello();
    }
    void printA() {
        System.out.println(a);
        hello();
    }

    public static void main(String[] args) {
        Class15.setA(1000);
        Class15 ob = new Class15();
        ob.printA();
    }
}

static변수나 static 메소드는 어떤 메소드에서도 사용되어질 수 있다.

non-static변수는 static메소드에 참조될 수 없다.
static변수나 static메소드는 어떤 메소드에서도 사용되어질 수 있다. (static메소드나 non-static메소드나 다 사용가능)

출처: https://gymdev.tistory.com/73, https://jooona.tistory.com/164

0개의 댓글