예시)
public class StaticVar {
String name;
int score;
int count;
}
public class StaticTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
StaticVar sv1 = new StaticVar();
sv1.name = "홍길동";
sv1.score = 90;
sv1.count = 1;
StaticVar sv2 = new StaticVar();
sv2.name = "김나나";
sv2.score = 70;
sv2.count = 2;
System.out.println("지금까지 학생수는 "+sv1.count);
}
}
● 몇개의 class 객체를 만들었는지 알 수 있게하려고 count 변수를 만들었다. 예를들어 sv1는 count가 1 sv2는 count가 2이다. 하지만 객체의 수가 많을 경우 몇개의 객체를 만들었는지 알기위해 sv1의 count를 사용한 것처럼 잘못 접근하여 올바르지 않은 count 변수 값으로 생각할 수 있다. 그래서 count 변수에대한 메모리 영역를 따로 만들어서 가장 최근에 만든 객체의 count변수를 모든 객체들이 공유하면 count변수를 잘 활용할 수 있다! 그것이 바로 static 변수이다.
●또한 객체를 새로 만들때마다 내가 그전까지 몇개의 객체를 만들었는지 생각해내야 count변수 값을 올바르게 줄 수 있기 때문에 객체가 생성되면 자동으로 count가 증가하도록 만들면 좋다. (데이터베이스에서 테이블의 id처럼)
public class StaticVar {
String name;
int score;
static int count = 0;
}
public class StaticTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
StaticVar sv1 = new StaticVar();
sv1.name = "홍길동";
sv1.score = 90;
StaticVar.count ++;
StaticVar sv2 = new StaticVar();
sv2.name = "김나나";
sv2.score = 70;
StaticVar.count ++;
System.out.println("지금까지 학생수는 "+StaticVar.count);
}
}
'Java' 카테고리의 다른 글
생성자 Constructor (0) | 2023.07.03 |
---|---|
메서드 오버로딩(Overloading) (0) | 2023.07.03 |
자바 class와 객체(인스턴스) / 자바 메모리 관련 0630 (0) | 2023.06.30 |
자바 함수 0630 (0) | 2023.06.30 |
자바 배열(Array) 0630 (0) | 2023.06.30 |