Wpis z mikrobloga

Cześć mirki

Mam pytanie odnośnie String poola (ogólnie poola, odnosi się też to do Integer pool) . Wiem jak z tego korzystać ale nie wiem dokładnie jak to działa.
Kiedy robię np. String zmienna = "mirek"; to nie powstaje nowy obiekt, tylko działa tutaj String pool.
Co się dzieje kiedy ponownie zrobię np. String zmienna2 = "mirek2";? String pool zostanie zmodyfikowany tak jak przy metodzie append(), przy StringBuilder czy powstanie nowy obiekt String pool z nową wartością "mirek2" czy jeszcze inaczej to działa?

#programowanie #java
  • 8
@menelaosPL: String zmienna = "mirek"; <- tutaj nie powstaje nowy obiekt, tylko ładuje "mirek" do poola.
Moje pytanie dotyczy tego jak ten pool jest modyfikowany, jak są tam dodawane nowe literały, czym jest poll - obiektem czy traktować go jeszcze inaczej?
@menelaosPL: no nie zawsze bo jeśli dany String będzie w pool to deklarując przez literał będzie pobrana referencja do tamtego Stringa w pooli a nie stworzony nowy.
Dla Integerów w ogóle nie ma czegoś takiego (wedle mojej wiedzy) jak pool jedynie tylko wartości -128 do 127 są w cache.
@rubesom poola nie traktujesz, bo to jest automat w jvm. Wiedza, że to jest jakoś cacheowane potrzebna jest, żeby wiedzieć, że masz porównywać obiekty integer i stringi za pomocą equals nawet jeżeli w testach wychodzi Ci, że == działa tak samo.