The main method is the entry point for your program. It needs to be public so that it can be accessed from outside the class, static because it isn’t called on an instance of your class, and void because it has no return value. The string array holds the arguments that the program was started with.
Don’t know exactly why String/System are capitalized, but that’s probably some naming convention, perhaps they are classes and classes should be capitalized (I’m not super well versed with java so that is a guess)
Not sure what you’re asking about println
Java is first compiled into bytecode (no longer looks like your code file, but it’s also not something the computer can read, it isn’t cpu instructions, it’s something in-between) and is then executed by a virtual machine (jvm) which is like a cpu except it’s a program (hence virtual machine). As the program runs, the jvm may decide to compile parts of the code further (optimize) according to which parts are used the most and how they get used.
Compiling and running looks like the picture below. You can see me supplying “Hello.java” and “Hello” as arguments (which String args holds in a main function) to javac (compiler) and java (jvm)
Not shown in the screenshot is that javac created a new file, Hello.class, which is what the jvm will execute