You can have utility classes, which have all their members static, and never therefore need any instances. Look at the
Math class, for example. There is no need ever to have an instance of such classes, so they usually prevent instantiation by the method shown in the
Java Language Specification. Try writing Math m = new Math(); and the compiler will complain bitterly because you can't instantiate Math.
There are classes like
this, which was mentioned in a recent
thread. If you look at it, you find it has several factory methods, which are static methods called getXXXInstance. Factory methods are called on the class in order to get an instance. Although BreakIterator itself is abstract, it has several subclasses, presumably as private inner classes or package‑private top‑level classes in the java.text. package, where us mere mortals can't find them. In that case, you can subclass BreakIterator, but for most uses, you simply call a getXXXInstance method and it provides an instance of itself all ready for the task in hand. You can even have classes with private constructors and factory methods which provide all the instances the classes's creators thought you would use. Note that most of the BreakIterator methods are not static, but you have to get an instance in order to use them.
I hope this goes some way towards answering your question.