티스토리 뷰
static변수란 ? 변수가 선언된 클래스의 모든 인스턴스를 공유하는 변수이다.
즉, 인스턴스 변수가 인스턴스 별로 각각 존재한다면
static을 사용하여 딱 하나만 존재해서 모든 인스턴스를 공유하는 형태의 변수이다.
static 변수와 메소드를 사용하는 클래스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | public class B { // 정적변수는 B클래스의 소속이 아니다. 단지 위치만 B클래스 안에 속해있고 프로그램 소속이다. public static int s_num = 0 ; // static 변수(정적)... 프로그램이 시작될 때 딱 한번만 만들어짐 public int m_num = 0 ; // 인스턴스 변수(멤버변수) .. 객체가 만들어 질 때 마다 만들어 진다. public B() { s_num++; this.m_num++; System.out.println( "s_num : " + s_num); System.out.println( "m_num : " + this.m_num); } // static 메소드는 프로그램 시작할 때 이미 사용 가능한 상태이다. // static 메소드에서는 일반 멤버 변수를 사용할 수 없다. public static void s_showInfo() { System.out.println( "s_num : " + s_num); // System.out.println( "m_num : " + this.m_num); // Error! // m_num은 객체가 만들어져야하기 때문에 Error } // 일반 멤버 메소드는 객체가 만들어져야만 사용할 수 있다. public void m_showInfo() { System.out.println( "s_num : " + s_num); System.out.println( "m_num : " + this.m_num); // no Error! } } |
B클래스를 사용하는 메인 클래스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public class ExampleStatic{ public static void main(String[] args) { // B.s_num+= 1 ; // System.out.println(B.s_num); B b 1 = new B(); B b 2 = new B(); B b 3 = new B(); B b 4 = new B(); B b 5 = new B(); // 외부에서 static 변수를 활용하기 // 단, static 변수가 public으로 되어 있어야함 // static 변수도 접근지시제어자의 영향을 받는다. // 클래스명 . static 변수명 System.out.println( "B.s_num : " + B.s_num); System.out.println( "b1.s_num : " + b 1 .s_num); // 사용 하지 말 것 // 멤버 변수인지 static 변수인지 // 헷갈린다. } } |
반응형
LIST
'프로그래밍 > Java' 카테고리의 다른 글
자바 ! 메소드 오버로딩 (1) | 2017.04.23 |
---|---|
자바 ! 생성자 (0) | 2017.04.22 |
자바 ! 캡슐화 (정보은닉, 접근지시제어자) (0) | 2017.04.21 |
자바 ! 접근 지시 제어자 (private, default, protected, public) (0) | 2017.04.20 |
자바 ! 객체지향 프로그래밍 (0) | 2017.04.18 |