본문 바로가기
프로그래밍 언어/JAVA

[JAVA] 정적 메소드(Static Method) & 정적 변수(Static Variable)

by E145 2021. 2. 4.
반응형

정적 메소드(Static Method) == 클래수 메소드

 

정적 메소드의 특징

 

 - 인스턴스가 필요하지 않는 메소드

 

 - static 키워드를 이용하여 메소드를 선언한다.

 

 - 클래스명을 사용하여 정적 메소드를 호출한다.

 

 - 정적 메소드와 정적 메소드가 아닌 메소드를 섞어서 클래스를 선언할 수 있지만, 

   정적 메소드가 아닌 메소드가 있다면 그 클래스의 인스턴스를 만들 수 있는 방법은 반드시 있어야 한다.

 

 - 정적 메소드에서는 정적 변수가 아닌 변수(인스턴스 변수)를 쓸 수 없다.

   

 - 정적 메소드에서는 정적 메소드가 아닌 메소드도 쓸 수 없다.

 

 - 정적 메소드 안에서는 this 키워드를 사용할 수 없다.

 

 - 클래스가 메모리에 로딩 될 때 자동으로 선언된다.

 


 

 

정적 메소드 예시

 

import java.util.*;

public class test {
    public static void main(String[] args){
        staticTest.test();
    }
}

class staticTest{
    static void test(){
        System.out.println("정적 메소드 테스트");
    }
}

실행 결과

 


 

정적 변수(Static Variable) == 클래수 변수

 

정적 변수의 특징

 

 - 정적 변수는 한 클래스의 모든 인스턴스에서 공유 한다.

 

 - 같은 클래스에 속하는 모든 인스턴스에서 그 정적 변수의 하나뿐인 복사본을 공유한다.

 

 - 정적 변수는 클래스가 메모리에 로딩될 때 초기화 된다.

 

 - 일반적으로 클래스의 새로운 인스턴스가 처음 만들어지거나, 정적 메소드가 실행될 때 JVM에서 해당 클래스를 불러와 로딩한다.

 

 - 정적 변수도 인스턴스 변수와 마찬가지로 선언만 하고 초기화하지 않으면 기본값으로 초기화된다.

 

 - static final로 선언된 변수는 상수이다. // static final인 경우 초기화해주지 않으면 에러가 발생한다.

   (fianl로 지정한 변수는 초기화 후 값 변경이 불가능하다.)

 

 - 정적 변수는 정적 메소드와 달리 일반 메소드에서도 접근이 가능하다.

 


 

정적 변수 예시

import java.util.*;

public class test {
    public static void main(String[] args){
        System.out.println(staticTest.a);
    }


}

class staticTest{
    static final int a=30;
    static void test(){
        System.out.println("정적 메소드 테스트");
    }
}

 

실행 결과

 

 


정적 변수 초기화

 

 - 정적 변수 초기화 블록을 이용하면 정적 필드를 초기화 시킬 수 있다.

 

 - 클래스가 메모리에 로딩 될 때 자동으로 선언된다.

 

 - 여러 정적 변수 블록이 선언되어 있는 경우, 순서대로 실행 된다.

 

 - 정적 블록도 정적 메소드와 같이 인스턴스 멤버(필드, 메소드), this 키워드를 사용할 수 없다.

 

public class start {

    public static void main(String[] args) {

        System.out.println("saticNumber : "+staticTest.number);
        System.out.println("saticName : "+staticTest.name);

    }
}

class staticTest{
    public  static int number;
    public  static String name;

    static{
        number = 3;
        name = "둘리";
        System.out.println("static 변수 1 실행");
    }

    static{
        number = 5;
        name = "홍길동";
        System.out.println("static 변수 2 실행");
    }
}

 


 

 

 

정적 변수, 메소드 사용 예시

 

 - 클래스 내에서 공통으로 사용하는 변수가 있는 경우, static을 붙여서 정적 변수로 선언한다.

 

 - 메소드 내에서 객체 고유의 데이터를 사용하지 않는 경우, static을 사용한다.

 

 

 

 

반응형

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

[JAVA] Getter / Setter  (0) 2021.02.04
[JAVA] 접근제한자, 정보은닉과 캡슐화 .  (0) 2021.02.04
[JAVA] String, StringBuilder, StringBuffer  (0) 2021.01.20
[JAVA] 스레드(Thread)  (0) 2021.01.20
[JAVA] 예외 처리  (0) 2021.01.20

댓글