JUGLviv

Meta


Share on:


Core: String part 2

juglvivjuglviv

В продовження попередньої статті про String http://jug-lviv.blogspot.com/2012/10/core-string-part-1.html друга стаття:

Магія String Об’экт/не об’єкт

Хоч String і є об’єктом, але він є immutable і створююється новий об’єкт і референс на старий об’єкт перетираються.

На консолі буде виведено:

not object
object
Отже: Не за бувайте, що String хоч і об’єкт але він є іммутабле і значення після передавання в функцію не буде змінюватись!  Приклад pass-by-value.
 

Магія String Concatenation

Всі знають (ну майже всі), що для додавання стрінгів треба використовувати спеціальні класи, але на скільки це критично мало хто задумується…

На моєму Intel i5 я отримав:
Using Strings took 73912nS
Using StringBuffer took 26563nS
Using StringBuilder took 10394nS


Продуктивність String vs StringBuilder вражаюча 700% на користь StringBuilder. Отже дуже раджу не лінитисьі використовувати StringBuilder!

Стосовно StringBuilder vs StringBuffer, то на перший погляд тут також просто – StringBuffer Thread safe. StringBuffer обов’язково потрібно використовувати, коли ви маєте багатопотокову систему.

Але от коли у вас не багатопотокова система, то тут не все так однозначно. В Java є така магічна річ як JIT, яка може видалити сихронізацію потоків і вирівняти продуктивнсть. Тож не потрібно обов’язково заміняти в легасі коді StringBuilder на StringBuilde, можливо, синхронізація і так видаляється. 

Магія String Utils.

Клас String  має достатньо багато інструментів, які нам допомагають зробити дуже багато речей найоптимальнішим шляхом, також Java має цілий набір класів які допомагають в маніпулюванні стрінгами. Але я б радив вам звернути увагу на сет спеціалізованих бібліотек, які ще більше полегшать життя кожному:
-Apache Commons – тут можна знайти цілу купу надзвичайно корисних дрібничок
-Google Guava просто фантастична кількість утилітних класів
-Spring Utils – ще один додаток, який робить світ Spring самодостаттнім.

ПС: Як написано нижче – ми намагаємось освіжити JUG і зробити його актуальнішим, але без ваших відгукув – це неможливо!!! Чекаємо на ваші думки, побажання, пропозиції ось тут: http://jug-lviv.blogspot.com/2012/10/jug-reset.html

Bitnami