Java 배우는 중에 main 메서드는 클래스 내에,


public static void main(String[] args) {...}


이런 식으로 선언하던데,

여기서 static 관련해서 궁금한 점이 있습니다.


왜 static을 써야 하는지는 구글링을 통해서 프로그램에서 main 메서드가 먼저 실행되어야 하기 때문에 붙이는 거라고 찾았습니다.


여기서 궁금한 점이 두 가지 생겼는데, 


1. C나 C++에서는 static을 붙이지 않는 걸로 아는데, Java의 main 함수가 C나 C++과 달리, class 안에 들어있는 메서드이기 때문에 static이 붙는 건가요? 

맞다면 왜 class 안에 있지 않으면 static을 안 붙여도 되는 건가요?

아니라면 왜 Java는 C나 C++과 달리 main함수에 static이 붙는 건가요?


2.static이 붙은 메서드는 static이 아닌 메서드를 아직 메모리에 할당된 상태가 아니기 때문에 부를 수 없다고 알고 있는데,

그러면 main 메서드에서 static이 아닌 메서드를 부를 수 없는 건가요?