Welcome to JavaRanch
Please don't simply write "please help" as a
thread title: look at
this FAQ. And please use the
CODE button. I have edited your post and you can see how much better it looks.
As you say, Java is entirely "pass by value." I wrote about that yesterday, and have a look at
this old thread, and
this JavaRanch FAQ. They might be helpful. Look at the links I quoted in that old thread.
You have s1 and s2 in your main method, then you pass copies of their location to the myBuf method. So the myBuf method has values, which it calls s1 and s2. When you reassign them in myBuf, you are only reassigning the local copies. Remember pass-by-value cannot change the values passed, so the original locations of the two StringBuffers are unchanged. So when you go back to the main method, you go back to the original s1 there.
Try changing the names of the parameters in myBuf to s3 and s4. You might then find it easier see that changing s3 doesn't change the original s1.