[Java] String i StringBuffer

0

Stringa używać jest bardzo wygodnie i moim zdaniem ma większą funkcjonalność niż StringBuffer(pomimo, że zabiera więcej ramu).
Więc się zapytowywuję, czego Wy używacie. String, czy StringBuffer?

0

Tak generalnie do wszystkich operacji na tekscie(poza dodawanie tekstów do siebie)
trzeba użyć StringBuffer.

0

W sumie duzo czesciej uzywam String, wiec zaznaczylem String. Wynika to z tego, ze aplikacje bardzo rzadko przetwarzaja tekst, na ogol jedynie go przechowuja i udostepniaja. StringBuffera oczywiscie tez uzywam, jesli przetwarzane teksty sa dlugie i zalezy mi na wydajnosci. Uzywanie StringBuffera zamiast Stringa nie zmienia zuzycia pamieci, jedynie oszczedza nieco czasu na kopiowanie danych do obiektow tymczasowych.

0

Uzywanie StringBuffera zamiast Stringa nie zmienia zuzycia pamieci, jedynie oszczedza nieco czasu na kopiowanie danych do obiektow tymczasowych.

Na pewno? O ile wiem, to String tworzy nowe 'obiekty'. Nie da się zmienić już istniejącego Stringa. One są immutable. Jeśli zrobisz:

String a = "Tekst";

a potem
a = "Inny tekst"

To obiekt z zawartością "Tekst" nadal jest w pamięci.

0

Ja używam StringBuffera jeśli muszę skleić kilka napisów, np. przy logowaniu czy też przy dynamicznym generowaniu zapytania do bazy. Wtedy wolę kilka razy append() niż str+str2. Nie przyglądałem się bliżej nio z sdk 1.4.*, czyli np. CharBuffer i może czasem warto z nich korzystać ;-)

pzdr,
y.

0

Jeśli zrobisz:

String a = "Tekst";

a potem
a = "Inny tekst"

To obiekt z zawartością "Tekst" nadal jest w pamięci.

Poczytaj lepiej dokumentacje Javy zamiast p** glupoty na forum.
Jest w pamieci, ale jej nie zajmuje. Tzn. inny obiekt w przyszlosci bedzie mogl zajac jego pamiec. Uzywanie Stringow ma tylko negatywny wplyw na wydajnosc, bo GC musi sie uruchamiac czesciej oraz kopiowanie danych z jednego stringa do innego zajmuje troche czasu. Nie jest to jednak az tak niewydajne jakby sie moglo wydawac, bo Java zamienia automatycznie sporo operacji na Stringach na operacje na StringBufferze. Np.
<java>
String b = "lajalfdj";
String c = "lah;gfhg;srhog"
String d = "lkdjflhgldkfjh"

String a = b + c + d;
// zamienione na
// String a = ((new StringBuffer()).append(b).append(c).append(d)).toString();
</java>

0

Poczytaj lepiej dokumentacje Javy zamiast p** glupoty na forum.

Synu, miałem na myśli to co napisałeś, oprócz:

Jest w pamieci, ale jej nie zajmuje.

I to są głupoty. Siedzę na krześle, ale jest ono wolne?

A wracając do tematu, przecież jasnym jest, że tamten String nie będzie do końca działania programu, tylko do momentu, aż zajmie się nim garbage collector.

1 użytkowników online, w tym zalogowanych: 0, gości: 1