- [Java] 28. Static 변수와 원리2024년 04월 18일
- Song hyun
- 작성자
- 2024.04.18.:01
728x90반응형[Java] 28. Static 변수와 원리
1. static 변수
static: 프로그래밍에서 중요한 개념 중 하나이다.
-클래스 변수라고도 불린다.
-클래스의 모든 인스턴스가 공유하는 변수이다.
=즉, 객체가 동일한 static 변수의 값을 공유한다.2. static 변수의 원리 : 왜 static 변수라고 불릴까?
우리가 자바 프로그램을 실행하면, 프로그램을 수행하기 위해 운영체제로부터 할당받는 메모리들이 존재한다.
그 특성에 따라 영역이 존재하는데, 그 구성요소는 아래와 같다.
메모리 영역(JVM Memory, Runtime Data Area)
-메서드 영역->스택->힙 순서로 동작한다.
3. static 변수 연습하기
4-1. 카드 Class를 만들어, static을 이용해 카드마다 고유의 번호 만들기
package basic.ch12; public class Card { // 멤버 변수, static 변수 private String name; private static int cardNumber = 11111; // 생성자 public Card(String name) { this.name = name; this.cardNumber = Card.cardNumber; Card.cardNumber += 1001; } // 멤버 함수 // get, set 작성 public String getName() { return this.name; } public int getCardNumber() { return this.cardNumber; } public void setName(String name) { this.name = name; } public static void main(String[] args) { Card card1 = new Card("신한카드"); System.out.println(Card.cardNumber); Card card2 = new Card("현대카드"); System.out.println(Card.cardNumber); Card card3 = new Card("국민카드"); System.out.println(Card.cardNumber); } // end of main } // end of class
// 다른 사람의 코드 public class Card { //멤버 변수, static 변수 private static int f_CardNum = 1000; private static int s_CardNum = 1000; private static int t_CardNum = 1000; private int f_CardNumber; private int s_CardNumber; private int t_CardNumber; private String cardName; //생성자 public Card(String cardName) { System.out.println(cardName + "가 발급되었습니다."); f_CardNumber = f_CardNum++; s_CardNumber = s_CardNum++; t_CardNumber = t_CardNum++; } //멤버 함수 public void cardNumber() { System.out.println("카드번호는 " + f_CardNumber + "-" + s_CardNumber + "-" + t_CardNumber); } //get, set 작성 public int getF_CardNumber() { return f_CardNumber; } public void setF_CardNumber(int f_CardNumber) { this.f_CardNumber = f_CardNumber; } public int getS_CardNumber() { return s_CardNumber; } public void setS_CardNumber(int s_CardNumber) { this.s_CardNumber = s_CardNumber; } public int getT_CardNumber() { return t_CardNumber; } public void setT_CardNumber(int t_CardNumber) { this.t_CardNumber = t_CardNumber; } public String getCardName() { return cardName; } public void setCardName(String cardName) { this.cardName = cardName; } //코드 테스트(메인함수) public static void main(String[] args) { Card card1 = new Card("신한카드"); card1.cardNumber(); System.out.println("-----------------------"); Card card2 = new Card("신한카드"); card2.cardNumber(); System.out.println("-----------------------"); Card card3 = new Card("신한카드"); card3.cardNumber(); } }
4-2. 회사, 사원 Class를 만들어, 각 사원 객체마다 고유의 사원 번호 할당하기.
package basic.ch12; public class Employee { private int employeeId; // 멤버 변수(객체마다 고유의 값을 가져야 한다.) private String name; private String department; private int serialNumber; // 요구 조건 // 사원이 존재하게 될 때마다 고유한 사원 번호를 할당하고 싶다. // 단, 사원 번호는 중복되어서는 안된다. // static과 멤버 변수에 활용 // 객체 생성자, 멤버 변수, 함수를 필요하다 호출 또는 초기화 할 수 있다. // 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; } public int getSerialNumber() { return serialNumber; } public void setSerialNumber(int serialNumber) { this.serialNumber = serialNumber; } }
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()); } }
728x90반응형'Java > 기본 개념 및 클래스' 카테고리의 다른 글
[Java] 30. Oracle 에서 Java 문서 읽기 (0) 2024.04.19 [Java] 28. static 메서드의 개념과 메서드 오버로딩 (0) 2024.04.19 [Java] 27. Java로 스타크래프트 모델링하기 (0) 2024.04.18 [Java] 26. 참조 변수 this, this의 3가지 용법 (0) 2024.04.18 [Java] 25. getter/setter 메서드 (0) 2024.04.17 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)