YYYEJI

[JAVA] Static Method와 Static Variable 본문

Java

[JAVA] Static Method와 Static Variable

YEJI ⍢ 2022. 12. 27. 00:38
728x90

Action을 수행하기 위해 객체가 필요없는 method들도 존재합니다.

 

객체없이 method를 호출(invoke)할 수 있었던 이유는 static 연산자를 사용했기 때문입니다.

 

 

Static Method / Class method


method를 호출(invoke)하기 위해 객체의 이름이 아닌 method의 이름을 사용하면 됩니다.

public class main {
	public static void main(String[] args) {
		greeting();
	}
	
	public static void greeting() {
		System.out.println("Hello world!");
	}
}

위에 예제처럼 객체를 생성하지 않아도 메소드(method)를 사용할 수 있습니다.

 

 

 

다음은 static 연산자가 붙은 변수를 살펴보겠습니다.

Static variable / Class variable


Instance 변수는 object가 생성될 때마다 새로운 공간을 할당받게 되는데 static이 붙은 변수는

여러개의 object 생성되도 하나의 공간을 공유하게 됩니다. 즉, static이 붙은 변수는 class의 모든 객체를 공유한다는 의미입니다.

 

static final이 붙은 변수 - 값이 변경될 수 없음.

static만 붙은 변수 - 값이 변경될 수 있음.

 

p class의 instance 변수를 static으로 선언해줬습니다.

public class p {		
	private static int count;
	
	public p() {
		count = 0;
	}

	public void setCount(int count) {
		this.count = count;
	}
	
	public int getCount() {
		return count;
	}
	
	public void increment() {
		count++;
	}
}

 

그리고나서 다른 class에서 두 개의 객체를 선언하고 같은 메소드(method)를 통해 변수의 값을 하나씩 증가시켜 줬습니다.

public static void main(String[] args) {
	p static_demo_1 = new p();
	p static_demo_2 = new p();
	
	static_demo_1.increment();
	static_demo_2.increment();
	
	System.out.println("Static_demo_1: " + static_demo_1.getCount());
	System.out.println("Static_demo_2: " + static_demo_2.getCount());
}

다른 객체에서 메소드(method)를 호출(invoke)했지만

count 변수가 하나의 공간을 공유하기 때문에 두 개의 결과값이 동인한 것을 확인할 수 있습니다.

 

 

 

◡̈

'Java' 카테고리의 다른 글

[JAVA] 오버로딩(Overloading)이란?  (0) 2022.12.27
[JAVA] Wrapper class란?  (0) 2022.12.27
[JAVA] Constructor란?  (0) 2022.12.27
[JAVA] Class Type인 변수 할당하기  (0) 2022.12.26
[JAVA] Setter/Getter 메소드  (0) 2022.12.26