Sobes.tech
Junior — Middle

Фарқиятҳои байни синфҳои String ва StringBuilder дар Java чист ва дар кадом ҳолатҳо тавсия дода мешавад, ки ҳар яке аз онҳоро истифода баред?

sobes.tech AI

Ҷавоб аз AI

Дар Java, синфҳои String ва StringBuilder барои кор бо сатрҳо истифода мешаванд, аммо хусусиятҳо ва соҳаҳои истифодаи онҳо гуногун мебошанд.

  • String: ин синфи беиҷозат (immutable) мебошад. Ҳар вақте ки сатр тағир дода мешавад, объект нав эҷод мешавад. Ин барои сатрҳое, ки тағир намеёбанд, қулай аст ва бехатариро дар муҳитҳои бисёрсоҳавӣ таъмин мекунад.

  • StringBuilder: ин синфи тағирёбанда (mutable) барои кор бо сатрҳо мебошад. Имкон медиҳад, ки мазмуни сатрро самаранок тағир дод, бе эҷоди объектҳои нав.

Вақте истифода бурдан:

  • Агар сатр тағир наёбад ё тағиротҳо минималӣ бошанд, String-ро истифода баред. Ин кодро содда мекунад ва бехатариро зиёд мекунад.
  • Агар лозим бошад, ки сатрро зуд-зуд тағир диҳед (масалан, дар циклҳо, дар пайваст кардани бисёр сатрҳо), StringBuilder-ро истифода баред; ин аз эҷоди бисёр объектҳои муваққатӣ пешгирӣ мекунад ва иҷрои онро беҳтар мекунад.

Масалан:

String s = "Hello";
s += " World";  // Объекти нави String эҷод мешавад

StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");  // Объект мавҷударо тағир медиҳад