1.The statement is in error because....
When you call an instance method(here, go()) without using a specific instance, the method is invoked on an implicit object "this".
You cannot refer to "this"(the implicit object) from within a static method(here, p.s.v.main()).
2. Static methods, as the name implies, build a static context...
meaning they should not be affected by the "properties" of an object(i.e. the instance fields..these fields can be called dynamic since they have different values for every object). Static methods can only refer to static fields of the class.So, when you have a method that you want to export, which is not affected by instance fields,
you should declare it as static.
3. Static fields are not related to object instances but classes...
When a class is loaded, the code for its methods (both instance and static) are are copied into the JVM's memory. The memory used for storing any instance's fields is allocated when the instance is created, and released when the instance is Garbage Collected. Static fields are part of the class, and their memory is allocated when the class is loaded.
[ December 17, 2008: Message edited by: Monu Tripathi ]