CORRECTION
There should be 3 objects:
1. StringBuffer s1 = new StringBuffer("abc");
Two objects will be created in memory s1 & "abc" . This is because, strings are interned and literals are added to a memory pool.
2. StringBuffer s2 = s1;
No object will be created here because s2 will point to "abc" created as part of s1
3. StringBuffer s3 = new StringBuffer("abc");
Only one object will be create for s3.