in C++ and java, the word "static" is a little different.
in C++, a static variable is one that belongs to a class, instead of a particular object. I'm not sure there is a such thing as a static function in C++. (At least I've never used it).
a static method in java is a method that belongs to a class, and not a particular object. the main() method is static in java, since you the main() method isn't called on a specific object.
for example, in java the math library is really a class called Math. you can't even create an object of type Math, because Math is a static class. all of the methods are called as Math.method(parameters...)
let's say you write an application in java. you called it Hello.java.
first you compile it by writing "javac Hello.java" from the command line.
then to run it, you write "java Hello". the program called java, runs your .class file. Somehow, it knows to call main. it doesn't first do Hello h = new Hello(); then h.main(). it does the equivalent of Hello.main(); , meaning it calls main on the class, not any particular object.