I have a question that why main method is marked as public?
According to an answer on stackoverflow, It is declared as static
The initialization software that starts your program must be able to see main so that it can call it.
main