본문 바로가기

Java

Static 변수

예시)

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