본문으로 바로가기

static 변수

category Java 2024. 4. 28. 13:59

static 변수는 프로그래밍에서 중요한 개념 중 하나입니다. 클래스 변수라고도 불리며, 클래스의 모든 인스턴스가 공유하는 할 수 있는 변수입니다. 즉, 객체가 동일한 static 변수의 값을 공유합니다.

 

왜 클래스 변수라고 불리는 걸까?

 

우리가 자바 프로그램을 실행을 하면 프로그램을 수행하기 위해 운영체제로부터 할당받는 메모리들이 존재 합니다. 그 특성에 따라 영역등이 존재 하는데 그 구성요소들은 아래와 같습니다.

메모리 영역(JVM Memory, Runtime Data Area)

 

공통으로 사용하는 변수가 필요한 경우

● 여러 인스턴스가 공유하는 기준 값이 필요한 경우

● 학생마다 새로운 학번 생성

● 카드회사에서 카드를 새로 발급할때마다 새로운 카드 번호를 부여

● 회사에 사원이 입사할때 마다 새로운 사번이 필요한 경우

● 은행에서 대기표를 뽑을 경우(2대 이상)

 

도전 문제

회사에 사원이 입사할때 마다 새로운 사번이 필요한 경우

 

package basic.ch12;

public class Company {

	public static String companyName = "그린컴퍼니";
	static int empSerialNumber = 1000;

	// 코드 테스트
	public static void main(String[] args) {

		Employee employee1 = new Employee("홍길동");
		System.out.println(employee1.getEmployeeId());

		Employee employee2 = new Employee("이순신");
		System.out.println(employee2.getEmployeeId());

		Employee employee3 = new Employee("강감찬");
		System.out.println(employee3.getEmployeeId());
	}
}
package basic.ch12;

public class Employee {

	private int employeeId; // 멤버 변수 (객체 마다 고유에 값을 가져야 한다)
	private String name;
	private String department;

	// 요구 조건
	// 사원이 존재하게 될 때 마다 고유한 사원 번호를
	// 할당하고 싶다. 단 사원 번호는 중복 되어서는 안된다.

	// static 과 멤버 변수에 활용
	// 객체 생성자, 멤버변수, 함수를 필요하다 호출 또는 초기화 할 수 있다.
	public Employee(String name) {
		this.name = name;
		this.employeeId = Company.empSerialNumber;
		Company.empSerialNumber++;

	}

	public int getEmployeeId() {
		return employeeId;
	}

	public void setEmployeeId(int employeeId) {
		this.employeeId = employeeId;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getDepartment() {
		return department;
	}

	public void setDepartment(String department) {
		this.department = department;
	}
	
	

}

 

카드 번호가 발급 될때마다 고유한 카드 번호를 가질 수 있도록 코드를 설계해보자

 

package basic.ch12;

public class Card {

	// 멤버 변수, static 변수

	public static String companyName = "현대카드";
	static int cardNumber = 100;

	private int cardId;
	private String name;
	private String department;

	// 생성자
	public Card(String name) {
		this.name = name;
		this.cardId = cardNumber;
		cardNumber++;

	}

	// 멤버 함수

	// get,set 작성

	public int getCardId() {
		return cardId;
	}

	public String getName() {
		return name;
	}

	public String getDepartment() {
		return department;
	}

	public void setCardId(int cardId) {
		this.cardId = cardId;
	}

	public void setName(String name) {
		this.name = name;
	}

	public void setDepartment(String department) {
		this.department = department;
	}

	// 코드 테스트(메인 함수)
	public static void main(String[] args) {

		Card card1 = new Card("우리카드");
		Card card2 = new Card("삼성카드");
		System.out.println(card1.getName() + "번호는 " + card1.getCardId());
		System.out.println(card2.getCardId());

	} // end of main

} // end of class

 

'Java' 카테고리의 다른 글

Exception(예외처리)  (0) 2024.04.29
static 메소드(함수)  (0) 2024.04.28
ver 0.0.1 Starcraft  (0) 2024.04.27
인터페이스에 대한 고찰  (0) 2024.04.25
중요한! 인터페이스(interface)  (0) 2024.04.25