[JAVA] static 변수
2021. 9. 14. 00:43ㆍWeb/JAVA
728x90
static이란?
고정된이란 사전적 의미를 갖고 있습니다.
특정 값이 메모리에 할당되면 그 값이 유지되는 것을 의미하며
특정한 값을 공유해야하는 경우에 사용할 수 있습니다.
ex) 학생이 생성될 때마다 학번이 증가해야 하는 경우
학번의 기준이 되는 값을 static으로 생성해야 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
package staticex;
public class Student {
static int serialNum = 10000; // 기준이 되는 값, 10000부터 시작
int studentID;
String studentName;
public Student() {
serialNum++; // 모든 인스턴트에서 공유되면서 증가하도록
studentID = serialNum; // 증가된 serialNum은 모든 인스턴트에서 공유되는 값이므로 studentID에 넣어준다
}
}
|
cs |
새로운 학생이 생성될 때 마다 static 변수 값을 복사해 증가시킨 다음 값을 인스턴트 학번 변수에 저장합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package staticex;
public class StudentTest1 {
public static void main(String[] args) {
Student studentKim = new Student();
System.out.println(studentKim.studentID); // studentID 가 순차적으로 부여되도록 // 10001
Student studentLee = new Student();
System.out.println(studentLee.studentID); // 10002
System.out.println(studentKim.serialNum); // 두 개의 인스턴트가 가리키는 serialNum은 10002로 동일값
System.out.println(studentLee.serialNum); // 10002
}
}
|
cs |
static 메서드
클래스 메서드라고도 하며 static 변수를 위한 기능을 제공합니다.
static 메서드에서는 생성이 불확실한 인스턴스 변수를 사용할 수 없습니다.
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
|
package staticex;
public class Student {
private static int serialNum = 10000; // 기준이 되는 값, 10000부터 시작
int studentID;
String studentName;
public Student() {
serialNum++; // 모든 인스턴트에서 공유되면서 증가하도록
studentID = serialNum; // 증가된 serialNum은 모든 인스턴트에서 공유되는 값이므로 studentID에 넣어준다
}
public static int getSerialNum() {
int i = 10; // 지역변수, getSeriaNum 메서드가 호출될 때 생성됐다가 끝나면 없어짐
i++;
System.out.println(i);
// studentName = "홍길동"; // 인스턴스 변수, 멤버변수, 유효될 때 생성되는 변수, static 메서드에서 인스턴스 변수를 사용할 수 없음
return serialNum; // static 변수, 클래스 변수
}
}
|
cs |
※ 변수 선언의 유효 범위
728x90
'Web > JAVA' 카테고리의 다른 글
[JAVA] ArrayList (0) | 2021.09.16 |
---|---|
[JAVA] singleton 패턴 (0) | 2021.09.15 |
[JAVA] this란? (0) | 2021.09.09 |
[JAVA] 정보은닉(information hiding) (0) | 2021.09.08 |
[JAVA] 객체지향 프로그래밍과 클래스 (0) | 2021.09.08 |