The best answer I can give is, "it depends." [NOTE: If your question refers to whether it's better to access a static method using the class name or an instance, then ignore my response. I prefer to use the class name in that case.]
If you are writing a class that consists of only "service" or "convenience" methods, you might want to define a class that contains only static methods. You can use the "java.lang.Math" class as a model of how to do this. All the static variables (PI and E) are final so you don't have to worry about two threads updating them simultaneously. However
you should declare a private constructor--that does nothing--to ensure that no one can instantiate the class.
Otherwise I'd lean towards the singleton approach. You can have state, you can override useful methods (such as "toString()"), you can extend the class as necessary and have normal, polymorphic behavior. [static methods don't understand "this" or "super"]. Later, if you decided you need a "pool" of these variables, it's very easy to add that behavior to the class.
I'd like to hear the thoughts of others as well, but I tend to go with the "singleton" except in exceptional cases.
[ January 14, 2004: Message edited by: Wayne L Johnson ]