왜 main()는 public static void인가? 자바에서 main()는 뭘까? 너무나 당연하게 그 자리에 있어서 이것이 특별한 메서드라는 생각조차 하지 않게 된다. main()는 자바 프로그램의 시작점이다. main()은 다른 메서드와 다르게 그 자리에서 실행해볼 수 있다. 좋다. 그런데 어떻게 이런 일이 가능해지는 걸까? 이름 빼고 선언부가 완전히 같은 다른 메서드를 정의해도 그것을 main()를 거치지 않고 실행하기란 불가능하다. 왜 public인가? 우리는 IDE의 Java Application Run으로 프로그램을 실행하는데 익숙하다. 이는 프로그램을 실행하는 주체가 main()이라고 착각하게 만든다. 하지만 잘 알다시피 프로그램을 실행하는 것은 main()이 아니라 JVM이다. 우리는 ..