본문 바로가기
Programming Language/Java

[자바] 정적 변수 static

by ggyongi 2021. 10. 22.
반응형

static 변수

다른 멤버 변수처럼 클래스 내부에 사용한다. 클래스 변수라고도 부름

사용법은 자료형 앞에 static 예약어를 붙여주면 된다.

ex) static int serialNum;

 

특징

클래스 내부에 선언하지만, 다른 멤버 변수처럼 인스턴스 생성 시마다 새로 생성되지 않는다.

static 변수는 프로그램이 실행되어 메모리에 올라갔을 때 딱 한 번 메모리 공간이 할당됨

모든 인스턴스가 하나의 static 변수를 공유한다.

 

사용 예제

서로 다른 학생 인스턴스에게 다른 학번 부여

package first_project;

public class Student {
	public static int serialNum = 1000;
	
	public int studentId;
	public String studentName;
	
	public Student() { //생성자 호출 시마다 serialNum 증가
		serialNum ++;
		studentId = serialNum;
	}
	
	
	public String getStudentName() {
		return studentName;
	}
	public void setStudentName(String studentName) {
		this.studentName = studentName;
	}
	
	
}

  

package first_project;

public class StudentTest {

	public static void main(String[] args) {
		Student lee = new Student();
		lee.setStudentName("LEE");
		System.out.println(lee.studentId);

		
		Student kim = new Student();
		kim.setStudentName("Kim");
		System.out.println(kim.studentId);
	}

}

 

 

클래스 메서드

static 변수를 위한 메서드

static 메서드라고도 부름

클래스 메서드를 이용하여 static 변수를 private으로 변경하고 get(), set() 등을 이용하여 이 static 변수에 접근할 수 있음

클래스 메서드는 호출 시 인스턴스 참조 변수가 아닌 클래스 이름으로 직접 호출이 가능

package first_project;

public class Student2 {
	
	private static int serialNum = 1000;
	
	public Student2() { //생성자 호출 시마다 serialNum 증가
		serialNum ++;
	}

	public static int getSerialNum() {
		return serialNum;
	}
	
	
}

  

package first_project;

public class StudentTest {

	public static void main(String[] args) {
		Student2 lee = new Student2();
		System.out.println("lee 학번: "+ Student2.getSerialNum()); // 클래스 이름으로 직접호출

		Student2 kim = new Student2();
		System.out.println("kim 학번: "+ Student2.getSerialNum());
	}

}

 

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글