Java parameters are always pass-by-value, period.
Here's a cute article explaining the phenomenon:
http://www.javaranch.com/campfire/StoryPassBy.jsp
In your case, it doesn't matter if it's pbr or pbv, because you are re-assigning sb to a new object (by calling buffer = new StringBuffer(...)
and buffer.subString(...)
does not mutate the object itself).