I think the point is that there is no file name restriction other than that if there is a public class, the file name must match the public class. This convention makes it easier to find public classes for compiling. Non-public classes cannot be accessed from other packages, so do not need to be found. "No restrictions" means platform-dependent file naming restrictions only, and since most platforms support file names beginning with a number, so does
java on that platform.