Sobes.tech
Junior

Kāpēc mēs neveidojam virkni, izmantojot konstruktoru new String()?

sobes.tech AI

Atbilde no AI

Veido virkni, izmantojot new String(), vienmēr izveido jaunu String objektu uz kaudzes, pat ja tāda paša vērtība jau pastāv String Pool.

Pretēji, virknes literāli (piemēram, "sveiki") tiek ievietoti String Pool. Ja tāda paša vērtība jau ir String Pool, tiek izmantots esošais objekts. Literālu izmantošana ļauj JVM optimizēt atmiņas izmantošanu.

Tādējādi, new String() noved pie pārmērīgas atmiņas izmantošanas un var samazināt veiktspēju, jo tiek radīti nevajadzīgi objekti. Mēs dodam priekšroku virknes literāliem vai citām virknes izveides metodēm (piemēram, String.valueOf()) resursu taupīšanai.

// Nav ieteicams. Vienmēr rada jaunu objektu uz kaudzes.
String str1 = new String("sveiki");

// Ieteicams. Izmanto `String Pool`, var izmantot esošo objektu.
String str2 = "sveiki";

// Salīdzinājuma rezultāts var būt atšķirīgs
System.out.println(str1 == str2); // Parasti false, jo tie ir dažādi objekti