티스토리 뷰
static변수란 ? 변수가 선언된 클래스의 모든 인스턴스를 공유하는 변수이다.
즉, 인스턴스 변수가 인스턴스 별로 각각 존재한다면
static을 사용하여 딱 하나만 존재해서 모든 인스턴스를 공유하는 형태의 변수이다.
static 변수와 메소드를 사용하는 클래스
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클래스를 사용하는 메인 클래스
public class ExampleStatic{ public static void main(String[] args) { // B.s_num+=1; // System.out.println(B.s_num); B b1 = new B(); B b2 = new B(); B b3 = new B(); B b4 = new B(); B b5 = new B(); // 외부에서 static 변수를 활용하기 // 단, static 변수가 public으로 되어 있어야함 // static 변수도 접근지시제어자의 영향을 받는다. // 클래스명 .static 변수명 System.out.println("B.s_num : " + B.s_num); System.out.println("b1.s_num : " + b1.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 |
댓글