각진 세상에 둥근 춤을 추자
[Java] static 변수 본문
static 변수란 정적 변수를 말한다.
static 변수는 클래스 내부에 선언하지만, 다른 멤버 변수처럼 인스턴스가 생성될 때마다 새로 생성하지 않는다.
static 변수는 프로그램이 실행되어 메모리에 올라갔을 때 딱 한 번 메모리 공간이 할당되며, 그 값은 모든 인스턴스가 공유한다.
학생이 새로 생성되면 학번을 차례로 부여하는 프로그램을 생성해 본다.
여기서 static 변수의 이름은 serialNum이다.
serialNum은 학생이 생성될 때마다 순서대로 증가한다.
이 증가한 값을 각 학생의 학번에 대입해 학생에게 새로운 학번을 부여한다.
1. 학생 클래스 생성하기
package ch06_3;
public class Student {
// static 변수는 인스턴스 생성과 상관 없이 먼저 생성된다.
public static int serialNum = 1000;
public int studentID;
public String studentName;
public int grade;
public String address;
public String getStudentName() {
return studentName;
}
public void setStudentName(String name) {
studentName = name;
}
}
2. static 변수 테스트하기
package ch06_3;
public class StudentTest1 {
public static void main(String[] args) {
Student student1 = new Student();
student1.setStudentName("Camila");
// serialNum 변수의 초기값 출력
System.out.println(student1.serialNum);
// serialNum 변수 값 증가
student1.serialNum++;
Student student2 = new Student();
student1.setStudentName("Aisha");
// 증가된 값 출력
System.out.println(student2.serialNum);
System.out.println(student1.serialNum);
}
}
3. 학번 생성하기
학생이 한 명 생성될 때마다 학번을 자동으로 부여하는 프로그램을 완성한다.
package ch06_3;
public class Student1 {
public static int serialNum = 1000;
public int studentID;
public String studentName;
public int grade;
public String address;
public Student1() {
serialNum++;
studentID = serialNum;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String name) {
studentName = name;
}
}
4. 학번 확인하기
StudentTest2 클래스에서 실제로 학생이 생성될 때마다 증가된 다른 학번을 가지는지 확인해 본다.
package ch06_3;
public class Student2 {
public static void main(String[] args) {
Student1 s1 = new Student1();
s1.setStudentName("Julissa");
System.out.println(s1.serialNum);
System.out.println(s1.studentName+ " 학번: "+s1.studentID);
Student1 s2 = new Student1();
s2.setStudentName("Damien");
System.out.println(s2.serialNum);
System.out.println(s2.studentName+ " 학번: "+s2.studentID);
}
}
'Java' 카테고리의 다른 글
[Java] Singleton (0) | 2022.09.18 |
---|---|
[Java] 변수 유효 범위 (0) | 2022.09.17 |
[Java] this를 이용하여 객체 간 협력하기 (0) | 2022.09.17 |
[Java] this를 사용하여 주소 값 반환하기 (0) | 2022.09.17 |
[Java] this로 다른 생성자 호출하기 (0) | 2022.09.17 |