main( ) 메소드란, Java로 구현된 프로그램이 시작될 때 가장 먼저 실행되는 메소드이다.
이것은, Java의 규칙이며 받아들이면 되는 부분이다.
public 은 접근제한자이며, Java에는 다음과 같은 접근 제한자가 존재한다.
public
먼저 살펴볼 public 접근 제한자는 접근하는데 제한이 없다.
즉, 어디서나 호출해서 사용할 수 있다.
protected
protected 접근 제한자는 동일한 패키지 내 또는 상속한 클래스만이 접근할 수 있다.
default
아무런 접근 제한자를 명시하지 않았을 경우 사용하는 접근 제한자이며, 동일한 패키지내에서만 접근할 수 있다.
private
같은 클래스내에서만 접근할 수 있다.
static 의 사전적 의미는 '정적인, 움직이지 않는' 이며, static 키워드를 사용하는 이유로는,
Java는 메모리 할당을 단 한번만 하게 되며 메모리를 절약할 수 있다.
또한, static으로 설정하면 같은 곳의 메모리 주소를 바라보기 때문에 static 변수의 값을 공유하게 된다.
아래의 코드를 살펴보자.
public class Counter {
private int count = 0;
Counter() {
this.count++;
System.out.println(count);
}
public static void main(String[] args) {
Counter c1 = new Counter();
Counter c2 = new Counter();
Counter c3 = new Counter();
}
}
위의 코드를 실행하면, 다음과 같은 실행 결과가 나타난다.
c1, c2, c3 객체 생성시 count 변수의 값을 증가시키고 싶었지만 c1과 c2 그리고 c3 객체의 count 변수는 서로 다른 메모리 주소를 가르키고 있기에, 이러한 실행 결과가 출력된다.
이제, static 키워드를 사용해보자.
public class Counter {
private static int count = 0;
Counter() {
this.count++;
System.out.println(count);
}
public static void main(String[] args) {
Counter c1 = new Counter();
Counter c2 = new Counter();
Counter c3 = new Counter();
}
}
위의 코드의 실행 결과는 다음과 같다.
count 변수에 static 키워드를 붙였더니, count 변수의 값이 증가되어 출력되는것을 볼 수 있다.
같은 메모리 주소를 가리키므로, count 변수가 증가되어 출력되는것이다.
static 메소드 안에서는 인스턴스 변수에 사용이 불가능하고,
일반 메소드 안에서는 static 변수를 사용할 수 있지만, 호출이 불가능하다.
void는 리턴 타입으로, 해당 메소드는 아무것도 리턴하지 않는다는 의미이다.
main은 메소드의 이름에 해당한다.
매개변수로, String 타입의 배열을 받게된다.
✍ 오늘의 핵심 내용으로는,
static 키워드를 사용한 메소드는 인스턴스 변수를 사용할 수 없고,
static 키워드를 사용한 변수는 일반 메소드로 호출이 불가능하다.
매개변수, 파라미터, 인자는 모두 같은 의미이다.