컴공생의 다이어리

[자바, Java] static 변수와 static 메서드 본문

Development/Java

[자바, Java] static 변수와 static 메서드

컴공 K 2021. 8. 15. 00:01

static 변수

만일 여러 인스턴스가 공유하는 기준 값이 필요한 경우 공통적으로 사용할 수 있는 변수가 필요하다. 이럴때, static 변수를 사용하면 된다. static 변수는 인스턴스가 생성될 때 만들어지는 변수가 아니라, 처음 프로그램이 메모리에 로딩될 때 메모리를 할당된다. 따라서 인스턴스 생성과 상관 없이 사용 가능하므로 클래스 이름으로 직접 참조 가능하다.

public class Student{
	public static int studentCode = 1000;	// 인스턴스들이 공유하는 변수
	private String name;
	private int score;

	public void setName(String name){
		this.name = name;
	}

	public void setScore(int score){
		this.score = score;
	}

	public String getName(){
		return this.name;
	}

	public int getScore(){
		return this.score;
	}
}

위 클래스에서 static 변수인 studentCode 변수를 Student.studentCode;로 값을 가져올 수 있다.

 

 

static 메서드

위에서 static 변수인 studentCode변수를 public으로 해서 접근할 수 있는데 이 변수를 private으로 하고 getStudentCode()함수를 static 메서드로 만들어 studentCode 변수의 값을 가져올 수 있다.

public class Student{
	public static int studentCode = 1000;	// 인스턴스들이 공유하는 변수
	private String name;
	private int score;
    
	public static int getStudentCode(){	// static method
		return studentCode;
	}
    
	public void setName(String name){
		this.name = name;
	}

	public void setScore(int score){
		this.score = score;
	}

	public String getName(){
		return this.name;
	}

	public int getScore(){
		return this.score;
	}
}

위 클래스에서 static 메서드 getStudentCode()를 호출하려면 Student.getStudentCode();로 함수를 호출할 수 있다.

 

static 메서드에서는 인스턴스 변수를 사용할 수 없다. static의 특성상 인스턴스 생성과 무관하게 클래스 이름으로 호출될 수 있다. 하지만 인스턴스 생성 전에 호출 될 수 있으므로 static 메서드 내부에서는 인스턴스 변수를 사용할 수 없다.

 

 

 

 

 

출처 : 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online

728x90
Comments