Вы сравниваете объекты, а не текст. buffer1 является разной формой Буфер2
прочитан JDK ссылка методы равен
равенства метод реализует отношение эквивалентности на непустых ссылках на объекты:
Это рефлексивное: для любого ненулевого опорного значения х , x.equals (x) должно возвращать true. Он симметричен: для любых ненулевых опорных значений x и y x.equals (y) должен возвращать true тогда и только тогда, когда y.equals (x) возвращает true. Это транзитивно: для любых ненулевых опорных значений x, y и z, если x.equals (y) возвращает true, а y.equals (z) возвращает true, то x.equals (z) должно возвращать true. Это согласовано: для любых непустых опорных значений x и y несколько вызовов x.equals (y) последовательно возвращают true или последовательно возвращают false, если информация, используемая при равных сравнениях с объектами, не изменяется. Для любого ненулевого опорного значения х, x.equals (NULL) должен возвращать ложь. Метод equals для класса Object реализует наиболее различающееся возможное отношение эквивалентности для объектов; то есть для любых непустых опорных значений x и y этот метод возвращает true тогда и только тогда, когда x и y относятся к одному и тому же объекту (x == y имеет значение true).
Обратите внимание, что при переопределении этого метода, как правило, необходимо переопределить метод hashCode, чтобы поддерживать общий контракт для метода hashCode, который утверждает, что равные объекты должны иметь одинаковые хэш-коды.
Примечание. Также рекомендуем использовать StringBuilder вместо StringBuffer, если вам не нужно быть потокобезопасным. – Puce
Это потому, что два буфера * не * равны. Если вы хотите сравнить равенство строк, которые содержат два буфера, тогда вам нужно будет использовать toString() в каждом буфере и сравнить результаты. – Jon
'buffer1.equals (buffer2)' это то же самое, что и 'buffer1 == buffer2'. Вот почему вам приходится сравнивать контент String. –