posted 19 years ago
Hello,
When you enter in the method "method", there is only 1 object in memory (the one with the value "StringBuffer") but 2 references to this object (sb in the main andthe local variable sb in the method parameter).
Ref sb (from main method) ---> "StringBuffer"
Ref sb (from method method) ---> the same object
So when you call sb.append(...) in the method "method", it's the original object that is modified =>StringBufferAppend. At this time we have in memory:
Ref sb (from main method) ---> "StringBufferAppend"
Ref sb (from method method) ---> the same object
Then when you create a new object and assign it to sb, it is the local reference that is modified, not the reference from the variable of the main method. The result in memory is:
Ref sb (from main method) ---> "StringBufferAppend"
Ref sb (from method method) ---> "Hai"
So when you leave the method "method", the variable sb reference already the same object, that has been modified.
Hope it can help.