Java is a pure Object Oriented Language. Anything you write in a Java Program should reside in a Class. Assume you have write a simple java program. So you write a Class named that contains the methods which perform your logic.
Now to run your logic you have to create an object to your class. So to create an object you should have atleast one method that have access with out creating an object. Hence the main method was declared as "static". Now the Java Virtual Machine(JVM) can call the main method as ClassName.main()
public is the access specifier which tells that the main method can be accessed from outside the class.
void is the return type of the main method.
String args is used to pass any arguments. Java only accepts the array of Strings as arguments.
In your question, the arguments are written as String args. Though it doesn't give any error it is always a good programming habit to declare an array as "TypeName variabeName" for example... "String args".