1. static 메소드란
: 인스턴스에 공통으로 사용하는 맴버변수에 사용한다.
해당 인스턴스가 여러개 생성되었을 때 한번의 static 맴버변수의 값을 할당하면
모든 인스턴스의 static맴버변수가 변경된다. 이해가 어렵다면, 소스를 보면서 이해하는게 좋다.
public class Study {
public static void main(String[] args) {
A a1 = new A("abc", "1");
System.out.println(a1.toString());
A a2 = new A();
a2.setIndex("2");
System.out.println(a2.toString());
// config 변경
a2.setConfig("def");
System.out.println(a1.toString());
System.out.println(a2.toString());
}
}
class A {
public static String config;
public String index;
A() {
}
A(String config, String index) {
this.config = config;
this.index = index;
}
public void setConfig(String config) {
this.config = config;
}
public void setIndex(String index) {
this.index = index;
}
@Override
public String toString() {
return "config : " + config + " index : " + index;
}
}
static 맴버변수인 config 는 a1, a2라는 인스턴스를 생성하였고 abc라는 값으로 생성하였다.
a2 인스턴스의 config 값을 변경하였더니 a1의 config도 변경된 것을 확인 할 수 있다.
A라는 class의 static config 는 모든 인스턴스에 적용됨을 확인 할 수 있다.
인스턴스의 전역맴버변수라 이해하면 좋을 것 같다.
2. static 메소드 사용법 및 특징
- 맴버변수 중 모든 인스턴스에 공통으로 사용하는 것에 static을 사용한다.
- static 변수는 인스턴스를 생성하지 않아도 사용이 가능한다. 메모리에 올라갈 때 자동적으로 생성됨.
- 인스턴스 생성 없이 사용이 가능하다.
- 메소드 내에서 맴버변수(인스턴스 변수)를 사용하지 않는다면, static을 고려.
'Java' 카테고리의 다른 글
[Java] 6. super 란 무엇인가 (0) | 2022.03.16 |
---|---|
[Java] 5. Object 클래스 (0) | 2022.03.16 |
[Java] 3. 향상된 for문 (0) | 2022.03.15 |
[Java] 2. 변수 (0) | 2022.03.15 |
[Java] 1. Java를 시작하기 전에 (0) | 2020.11.30 |