Metoda StringBuffer's równa równa się true tylko wtedy, gdy obiekt StringBuffer jest porównywany ze sobą. Zwraca wartość false w porównaniu z dowolnym innym obiektem StringBuffer, nawet jeśli zawierają one te same znaki.
To dlatego „==” sprawdza równość referencyjną a ponieważ zarówno SB1 i SB2 różne referencje obiektów, więc wyjście w tym przypadku jest „false”
Nadal, jeśli chcesz sprawdzić, czy zawartość jest równe w obu StringBuffer obiektów, można użyć tego:
sb1.toString().equals(sb2.toString())
2. System.out.println(sb1.equals(sb2));
to daje wyjście jako „fałszywe”, ponieważ .equals metoda() nie zostały przesłonięte w klasie StringBuffer. Używa więc metody .equals() z nadrzędnej klasy "Object". W klasie obiektu .equals() został napisany w celu sprawdzenia równości odniesienia.
Należy zauważyć, że sb3.equals (sb4) zwróci "true" w przypadku String. Ponieważ metoda .equals() została nadpisana w klasie String w celu sprawdzenia i dopasowania zawartości dwóch różnych łańcuchów.
StringBuidler nie jest chroniony wątkami, o ile wiem, że – Yaneeve
StringBuilder nie jest bezpieczny dla wątków. Z dokumentacji SDK w StringBuilder: "zgodny z StringBuffer, ale z ** bez gwarancji synchronizacji **", z akapitu wprowadzającego tutaj: http://java.sun.com/j2se/1.5.0/docs/api/ java/lang/StringBuilder.html –
oczywiście, moje złe. przeczytaj dokument zbyt szybko StringBuffer, IT jest uzupełniony przez StringBuilder, więc jest przeznaczony do użycia przez pojedynczy wątek. Przepraszam za to. – mkolodziejski