String, stringa, stringiem pogania

Jakie jest PHP każdy widzi. Plusem jest to, że wystarczy przeczytać kurs na onecie, znać choć trochę HTMLa i JSa i da się coś stworzyć. W Javie… cóż już tak łatwo nie jest. Pomijając zupełnie inne pole zastosowań oraz użyty model języka to problemem, z którym na początku sobie trudno poradzić jest przejście z myślenia prostego, na cokolwiek bardziej ‘porozbijane’.

O co mi konkretnie chodzi? Ano choćby o to, że mamy taką tablicę. W PHP tablica to tablica, ma dynamicznie przydzielany/budowany rozmiar, można zrobić na niej cuda niewidy. W Javie mamy kolekcje, kolejki, stosy, interfejsy implementowane w klasach i potem dziedziczące po tym kolejne klasy. Dużo, skomplikowanie i na pierwszy rzut oka wydaje się, że niepotrzebnie. Oczywiście życie pokazuje, iż wszystko zostało przez ludzi z Suna dobrze przemyślane i należy się nowego nauczyć, a nie wzdychać ze smutkiem.
Podobnie jest z tak fajnie prostą rzeczą jaką są ciągi znaków, czyli popularne stringi.  W Javie owszem string istnieje, ale ma jeszcze kilku kolegów. Oto oni:

String to typ podstawowy. I cechą charakterystyczną tej klasy jest to, iż wszystkie jej metody zwracają nowy obiekt String!!! Czyli nie ma modyfikacji obiektu, na rzecz którego wywołaliśmy którąkolwiek z metod, ale stworzenie nowego.

StringBuilder to właśnie sposób na to, by poprzez szereg metod (append czy insert) modyfikować swój egzemplarz.

– Istnieje też coś tak fajnego jak StringBuffer, który posiada dokładnie te same metody co StringBuilder, jednakże klasa ta jest przeznaczona dla programowania współbieżnego. Przy każdej operacji dokonuje sprawdzania czy na obiekcie StringBuffer działa tylko jeden wątek.

– na sam koniec zostawiłem StringTokenizer. W PHP jedną z moich ulubionych funkcji jest explode oraz implode. Działanie klasy StringTokenizer jest zasadniczo dość podobne, ale jednakże różni się w działaniu. Jej działanie polega na wyciąganiu z podanego łańcucha poszczególnych jego fragmentów. Świetnie przydaje się to przy wyświetlaniu danych tabelarycznych, czy listowaniu wyniku zapytania na bazie.

To taka lista na szybko. Nie zamierzam wklejać przykładów kodu, gdyż byłoby to kopiowaniem dokumentacji. Pragnąłem tylko pokazać gdzie w Javie należy szukać rozwiązania jakiegokolwiek problemu związanego z łancuchami tekstowymi.

Advertisements

2 thoughts on “String, stringa, stringiem pogania

  1. Zyx

    Ta niemodyfikowalność typu String bywa wkurzająca, szczególnie gdy musisz StringBuilderem kupę danych połączyć w jeden ciąg :). Jeszcze trochę, a zacznę się zastanawiać nad napisaniem jakiegoś preprocesora działającego w locie, który tuż przed kompilacją automatycznie będzie rozwijać plusy w StringBuildera, bo przecież to jest rozwiązanie dla masochistów, a nie normalnego człowieka, który chce program napisać.

  2. KosciaK

    Co do StringTokenizera to warto wiedzieć, że (za javadocem):
    StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s