인프런의 "Do it! 자바 프로그래밍 입문" 강의에서 정리한 내용
Student.serialNum = 100; // serailNum이 static 변수
학생들이 생설될 때 마다 학번을 부여해 줌.
학번은 증가할 때 마다 1씩 증가함.
<Student.java>
package staticEx;
public class Student {
static int serialNum = 10000;
int studentID;
String studentName;
public Student() {
serialNum++;
studentID = serialNum;
}
}
<StudentTest1.java>
package staticEx;
public class StudentTest1 {
public static void main(String[] args) { // 단축키 psvm
Student studentJ = new Student();
System.out.println(studentJ.studentID);
Student studentT = new Student();
System.out.println(studentT.studentID);
System.out.println(studentJ.serialNum);
System.out.println(studentT.serialNum);
}
// 출력
// 10001
// 10002
// 10002
// 10002
}
만약, student.java를 아래와 같이 수정한다면...
package staticEx;
public class Student {
private static int serialNum = 10000;
int studentID;
String studentName;
public Student() {
serialNum++;
studentID = serialNum;
}
public static int getSerialNum() {
int i = 10; // 지역 변수
i++;
System.out.println(i);
studentName = "test"; // 멤버 변수, 인스턴스 변수 => 에러남
return serialNum; // static 변수, 클래스 변수
}
}