All objects, whether referred to by static fields, instance fields or local variables, are stored on the heap.
Remember that Java
fields are not objects, but they can be references to objects. (The alternative is that they are primitives, like int).
Instance fields are part of the object instance on the heap. Static fields are (conceptually at least) part of the class, as loaded by a particular ClassLoader.
In simple applications, you only have the system ClassLoader, so each static field has one value in the whole JVM. In complex applications (e.g. Web application servers), the same class may be loaded by more than one ClassLoader. In that case, each static field has one value for each ClassLoader. If you're a beginner, don't worry overly about this, but revisit it when you understand class loading fully.
[ February 05, 2007: Message edited by: Peter Chase ]