언어 공부하기/JAVA 개념

[Java 자바] static 키워드 사용하는 이유란? static에 대해 알아보자 (Static)

망댕이 2024. 7. 22. 18:47
반응형

▷ Static

자바의 Static 키워드는 클래스와 관련된 멤버를 정의할 때 사용한다.이런 Static 키워드는 인스턴스를 만들지 않고 클래스에 선언된 변수와 메소드를 사용할 수 있다는 특징을 가지고 있다.공유를 해야하는 변수나 메소드에 static을 붙여 사용하며, 그 변수나 메소드를 사용할 때는 인스턴스명이 아닌 클래스 명을 직접 지정하여 사용한다.

 

class Ex1{
    static int example1;
    static int example2;
}

class Main{
    public static void main(String[] args){
       Ex1.example1 = 1000;
       Ex1.example2 = 2000;
    }
}

 

그럼 아래 예제를 통해 조금 더 알아보도록 하자.

 

class Ex{
    static int month; // static 붙은 변수 (클래스 변수)
    static int count; // static 붙은 변수 (클래스 변수)
    
     static void name(){  // static 붙은 변수 (클래스 메소드)
        System.out.println(month + "월의 망댕이");
    }
    
    int price; // static 붙지 않은 변수 (인스턴스 변수)
    int price2; // static 붙지 않은 변수 (인스턴스 변수)
    
    void money(){  // static 붙지 않은 메소드 (인스턴스 메소드)
        price2 = (int) (price*0.9);
        System.out.println("이번달의 수익 : " + price2);
        count++; // 클래스 변수는 인스턴스 변수들과 다르게 초기화되지 않고 그 값을 계속 유지
                 // 예를 들어 Ex.count를 3번 호출하면 count는 3값을 갖는다.
    }
}

class Main{
    public static void main(String[] args){
        Ex.month = 10;
        Ex.name();
        // Ex클래스의 인스턴스 없이 변수와 메소드를 사용한다.
        
        Ex ex = new Ex();
        ex.price = 300000;
        ex.money();
        // 인스턴스를 이용하여 Ex에 있는 변수와 메소드를 사용한다.
        System.out.println(ex.count+"번째 수익");
    }
}
//실행결과

10월의 망댕이
이번달의 수익 : 270000
1번째 수익


static이 붙은 변수, 메소드와 static이 붙지 않은 변수, 메소드의 차이점을 알아볼 수 있다.

static이 붙은 변수와 메소드에는 인스턴스 없이 클래스.변수or메소드()를 사용하고

static이 붙지 않은 변수와 메소드는 인스턴스를 이용하여 변수or메소드()를 사용한다는 점을 알 수 있다.

 

마지막으로 static에 대해 간단하게 정리하자면 이렇게 볼 수 있다.

(1) static이 붙은 변수 or 메소드 사용 시

클래스 명.변수;
클래스 명.메소드();


(2) static이 붙지 않은 변수 or 메소드 사용 시

클래스명 참조변수;
참조변수 = new 클래스명();

참조변수.변수;
참조변수.메소드()

 

 

 

잘못된 정보나 오류는 댓글로 부탁드립니다!!

반응형