유혁의 개발 스토리

[Java] 4. static 메소드와 인스턴스 메소드 본문

Java

[Java] 4. static 메소드와 인스턴스 메소드

유혁. 2022. 3. 15. 15:32

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