あーもしかして、new StringBuffer().appendの部分で新しいstrの中のstringオブジェクトの値を引数にして、StringBufferオブジェクト作って、appendしてその参照用IDをstrに上書きしてるってことなんでしょうか?