티스토리 뷰

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
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
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 28
29 30 31
글 보관함