StringBuffer не переопределяет объект . Метод , поэтому он не выполняет сравнение строки. Вместо этого он выполняет сравнение прямого объекта. Ваш условный может быть, а также (s1 == s2). Если вы хотите сравнить строки, вам нужно сначала превратить буферы на строки.
См. http://java.sun.com/j2se/1.5.0/docs/api/java/lang/stringbuffer.html
Редактировать: я предполагаю, что мы в мире Java Отказ
P.S. Если вы находитесь в однопоточной среде, или ваши буферы изолированы к одному потоку, вы действительно должны быть использованы StringBuilder вместо StringBuffer .
StringBuffer equals не переопределяется для проверки содержимого. Он использует стандартное «мелкое равенство», которое сравнивает ссылки, унаследованные от java.lang.Object.