This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Top-level classes cannot be declared static. It's not useful to be able to declare top-level classes static; what it means to do that is not defined in the Java language specification. So, why would you want to be able to declare a top-level class static, if it doesn't mean anything? The extra word static would only confuse people. So it's a good thing that the Java compiler gives you an error if you try to do this.
Do you mean what static means when it is used on a nested class? Like this:
An instance of a non-static nested class (also called an inner class) exists in the context of an instance of the enclosing class; it can, for example, access the member variables of the instance of the enclosing class:
The difference between an inner class and a static nested class is that the latter exists independent of an instance of the enclosing class - so in a static nested class, you cannot access member variables of the enclosing class.
Top-level classes ofcourse don't have an enclosing class, so you don't need the static modifier for top-level classes to make the distinction.
Well, it's more of a matter of what makes sense. Just think about it. Static means that something is part of a class, not of an instance. An outer class can't be part of an instance or another class, so what sense does it make to say it's static or not?