declaring a variable as final means its value cannot be changed, and its value can only be set where it was declared. eg. final int myVar = 5; // the following will not work myVar = 6; Also, declaring a class as final means it can't be extended (sub-classed). Declaring a method as final means that method can't be overwritten (assuming the class that defines the method is not already final). James.
Because it belongs to the class as a whole, and it can not be modified once a value is assigned. Since you can have a class without any objects being created, the only way the JVM can assure that static final values will have a value, is to make sure they are initialized at declaration time. final variables (non-static) are allowed to be initialized in the constructor(s).
Bosun (SCJP, SCWCD)
So much trouble in the world -- Bob Marley