posted 22 years ago
When you make the variable final, instead of placing the value of x in the stack for method1 (which gets zapped as soon as the method is over) the variable value gets put in the Constant Pool which sticks around and is therefore available so that the m object can use it even after method1 is over.
In this case that is not much of a deal because as soon as method1 is over the the object referenced by m is available for the GC, however it is possible for such a method to return such an object or to have a variable outside the method hold a reference to it. In that case the MyClass object could live for a LOT longer than the method in which it was created.
"JavaRanch, where the deer and the Certified play" - David O'Meara