비전공자의 개발과 친해지기/클래스와 객체

[JAVA : 클래스와 객체]5. static

justdoIT0730 2022. 5. 5. 16:17
728x90
728x90

static

  static 은 메서드 혹은 변수에 붙여 사용할 수 있는데 이를 클래스에서 유용하게 사용할 수 있습니다. 만약 클래스 안의 멤버에 static이 붙으면 그 멤버는 클래스의 객체를 선언하지 않고 바로 콜해서 사용할 수 있습니다.

 

import java.io.*;
class Main {
	public static void main(String[] args) {
		
		ClassExample.mInt = 3;
		ClassExample.Print();
		
		ClassExample c = new ClassExample();		
		c.mInt = 20;
		c.Print();
	}
}


class ClassExample {
	
	public static int mInt;
	
	public static void Print() {
		System.out.println( mInt );
	}
	
}

    위 코드는 ClassExample 클래스의 변수 mInt와 Print 메서드에 static을 붙인 뒤 main 메서드에서 사용한 예제입니다.

 

  1. 5번째와 6번째 줄을 보면 static이 붙은 mInt 변수와 Print 메서드를 객체 선언 없이 직접 사용한 것을 볼 수 있습니다. 이는 객체에 메모리를 할당하지 않고 사용할 수 있는 것처럼 보이지만, 사실 static이 붙은 멤버들은 프로그램이 시작될 때 우선 메모리에 할당되기 때문에 new를 통한 객체 초기화가 필요 없는 것입니다.
  2. 예시의 8번째 줄부터 나오는 소스코드처럼 new를 사용하여 객체를 만들고 그 객체를 통해 멤버들을 제어하셔도 됩니다.

 

  main 메서드에 static이 붙어야 하는 이유는 main 메서드가 프로그램이 처음 시작되는 메서드이기 때문입니다. main 메서드보다 빨리 실행될 수 있는 코드가 없기 때문에 static을 사용하지 않으면 main 메서드의 메모리를 할당해줄 부분이 존재하지 않습니다. 때문에 프로그램 시작과 함께 main 메소드의 메모리를 할당해야 합니다.

 

  

  static을 사용할 때 클래스 내에서 static 을 사용하는 메서드는 멤버변수 사용 시 static 멤버변수만 사용 가능하다는 점을 주의하시기 바랍니다.

728x90
728x90