컴공생의 다이어리
[자바, Java] static 변수와 static 메서드 본문
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
반응형
'Development > Java' 카테고리의 다른 글
[자바, Java] ArrayList (0) | 2021.08.17 |
---|---|
[자바, Java] 변수의 유효 범위와 메모리 (0) | 2021.08.16 |
[자바, Java] 접근 제어 지시자(access modifier) - private, default, protected, public (0) | 2021.08.14 |
[자바, Java] 오버로딩(Overloading)과 오버라이딩(Overriding) (0) | 2021.08.13 |
[자바, Java] 클래스(class), 객체(object), 인스턴스(instance) 차이 (1) | 2021.08.12 |
Comments