ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 static 정의 및 예제!!
    Java(자바) 2014. 6. 17. 11:44

    정의)


    static이 붙은 변술르 크래스 변수, 그렇지 않은 변수를 객체 변수라고 한다. 객체 변수는 클래스로부터 객체가 생성될 때마다 각 객체의 변수들이 생성되지만, 클래스 변수는 그 클래스로부터 생성된 모든 객체들이 하나의 클래스 변수를 공유 한다.


    클래스 변수는 객체가 생성될 때 메모리 영역을 할당하는 것이 아니고 클래스가 로딩되는 과정에서 메모리에 한번만 할당 되는 멤버이다. 그러므로 클래스 변수는 하나의 클래스로부터 생성된 객체들 사이의 통신이나 객체들 사이의 공통되는 속성을 표현한는 데 사용될 수 있다. 


    1.클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통적으로 사용      해야하는 것에 static을 붙인다.

       - 인스턴스를 생성하면, 각 인스턴스들은 서로 독립적이기 때문에 서로 다른 값을 유지한다.

    경우에 따라서는 각 인스턴스들이 공통적으로 같은 값이 유지되어야 하는 경우 static을 붙인다.



    2.static이 붙은 멤버변수는 인스턴스를 생성하지 않아도 사용할 수 있      다.


      - static이 붙은 멤버변수(클래스변수)는 클래스가 메모리에 올라갈때 이미 자동적으로 생성되기 때문이다.



    3.static이 붙은 메서드(함수)에서는 인스턴스 변수를 사용할 수 없다.


      - static이 붙은 메서드는 인스턴스 생성 없이 호출가능한 반면, 인스턴스 변수는 인스턴스를 

         생성해야만 존재하기 때문에 static이 붙은 메서드를 호출할 때 인스턴스가 생성되어있을수도 그렇지      않을 수도 있어서 static이 붙은 메서드에서 인스턴스변수의 사용을 허용하지 않는다.



    예제)

    class Discount1 {                                    // Discount은 main()이 없는 멤버 클래스이다.

    static int month;

    static int count;                                 // static이 붙은 2개의 변수를 선언한다.

    int price;

    double dcRate;

    int dcPrice;                                        // static이 없는 3개의 변수를 선언한다

    static void title() {

    System.out.println("***" + month + "월 고객 감사 할인 행사***" + "\n");

    }

    void doCal() {

    dcPrice = (int)(price - price * dcRate);

    System.out.println("정가는" + price + "원 입니다.");

    System.out.println("할인가는" + dcPrice + "원 입니다.");

    count ++;

    }

    }


    class PriceCal1 {                                   

         public static void main(String[] args) {


    Discount1.month = 12;                            //  Discount1 클래스의 인스턴스를 만들지도 않고 Discount1 

       클래스에 있는 변수와 메소드를 사용한다. Static 변수와 

       메소드 이기 때문이다.

    Discount1.title();


    Discount1 cal1 = new Discount1();         // Discount1 클래스의 인스턴스를 만들고 나서 Discount1 클래

     스에 있는 변수와 메소드를 사용한다. static이 없는 변수와  메소드이기 때문이다.

    cal1.price = 20000;

    cal1.dcRace = 02;

    cal.dcCall();

    System.out.println("귀하는" + Discount1.count + "번째 손님입니다." + "\n");


    Discount1 cal2 = new Discount1();

    cal2.price = 40000;


      }

    }



    실행결과

    +++ 12월 고객 감사 할인 행사 ***


    정가는 20000원 입니다.

    할인가는 16000원 입니다.

    귀하는 1번째 손님 입니다.

    'Java(자바)' 카테고리의 다른 글

    자바 Statement 와 PreparedStatement의 차이점  (0) 2015.01.15
    자바 StringTokenizer !!  (0) 2014.09.26
    자바 final 이해  (0) 2014.06.17
    Enumeration vs leterator 정리  (0) 2014.03.27
    해쉬 테이블(Hashtable)  (0) 2014.03.17
Designed by Tistory.