Ключова разлика – String срещу StringBuffer срещу StringBuilder в Java
String, StringBuffer и String Builder са класове в Java. Низът се използва широко в програмирането на Java. След като бъде създаден обект на String, не е възможно да го промените. Всеки път, когато настъпи промяна в низа, тя създава нов низ. Дори и да е конкатенация към съществуващ низ, той създава нов низ. Това причинява загуба на памет. Класовете StringBuffer и StringBuilder в Java се използват за модифициране на String. Ключовата разлика между String, StringBuffer и StringBuilder в Java е, че String е клас за създаване на обект от тип String, който е поредица от знаци, StringBuffer е клас, който се използва за модифициране на низове, който осигурява безопасност на нишката, а StringBuilder е клас, който се използва за модифициране на низове, които не осигуряват безопасност на нишката.
Какво е низ в Java?
Класът String е в пакета java.lang. Всеки път, когато програмистът създава String, той е обект от тип String. Низовете са неизменни, което означава, че след като обектът е създаден, той не може да бъде променян. Обектите, създадени с помощта на обвиващи класове като Integer, Byte, Float, Double, също са неизменни. Низов литерал е ограден в двойни кавички. напр. "Здравей свят". Всеки път, когато се създаде низов литерал, виртуалната машина на Java (JVM) проверява набора от постоянни низове. Ако низът съществува, се връща препратка към постоянния пул String. Ако това е нов низ, този обект се създава в набора от постоянни низове.
Фигура 01: Java програма, използваща String, StringBuffer и StringBuilder
Вижте частта от кода по-долу.
Низ s1=“Здравей”;
s1=s1 + “Свят”;
System.out.println(s1);
В първия израз s1 се отнася до „Hello“в набора от константи String. Във втория оператор JVM не променя съществуващия низ. Вместо това той създава нов низ като „Hello World“и s1 вече се позовава на този нов низ. Излизащият обект „Hello“все още съществува в набора от константи String.
Ако има код, който е, Низ s1=”Здравей”;
Низ s2=s1;
s1, s2 и двете ще препращат към String обекта „Hello“.
Какво е StringBuffer в Java?
Класът StringBuffer се използва, за да направи String обектите променливи. Следователно тези обекти могат да бъдат модифицирани. StringBuffer дефинира четири конструктора. StringBuffer(), StringBuffer(int size), StringBuffer(String str), StringBuffer (charSequence ch)
Вижте кода по-долу, StringBuffer s1=нов StringBuffer(“Здравей”);
s1.append(“Свят”);
System.out.println(s1);
В израз 1 s1 се отнася до обекта „Hello“в купчина. Обектът е променлив, защото е създаден с помощта на StringBuffer. В израз 2 „World“се добавя към същия обект „Hello“String.
String обекти, създадени с клас StringBuffer, могат да пестят памет. StringBuffer осигурява безопасност на нишката, тъй като две нишки не могат да имат достъп до един и същ метод в класа StringBuffer едновременно. Безопасността на нишките намалява производителността на StringBuffer. Класът StringBuffer съдържа методи като append(), insert(), reverse(), replace().
Какво е StringBuilder в Java?
Класът StringBuilder се използва, за да направи String обектите променливи. Следователно тези обекти могат да бъдат модифицирани. Функционалността е подобна на StringBuffer, но това не осигурява безопасност на нишката. StringBuilder има конструктори като StringBuilder(), StringBuilder(int size), StringBuilder(String str).
Вижте кода по-долу.
StringBuilder s1=нов StringBuilder(“Здравей”);
s1.append(“Свят”);
System.out.println(s1);
В израз 1 s1 се отнася до обекта „Hello“в купчина. Обектът е променлив, защото е създаден с помощта на StringBuilder. В израз 2 „World“се добавя към същия обект „Hello“String. Няма създаване на изцяло нов String обект.
Низовите обекти, създадени с клас StringBuilder, могат да пестят памет. За разлика от StringBuffer, StringBuilder не осигурява безопасност на нишката, тъй като две нишки могат да имат достъп до един и същи метод в класа StringBuilder едновременно. Класът StringBuilder съдържа методи като append(), insert(), reverse(), replace().
Каква е приликата между String, StringBuffer и StringBuilder в Java?
Всички могат да се използват за създаване на низове
Каква е разликата между String StringBuffer и StringBuilder в Java?
Низ срещу StringBuffer срещу StringBuilder |
|
низ | Низът е Java клас, който се използва за създаване на обект от тип String, който е поредица от знаци. |
StringBuffer | StringBuffer е Java клас, който се използва за създаване на String обекти, които могат да бъдат модифицирани с безопасност на нишката. |
StringBuilder | StringBuilder е клас, който се използва за създаване на низови обекти, които могат да бъдат модифицирани без безопасност на нишката. |
Променливост | |
низ | Низът е неизменен клас. |
StringBuffer | StringBuffer е променлив клас. |
StringBuilder | StringBuilder е променлив клас. |
Безопасност на нишките | |
низ | Методите на String са безопасни за нишки. |
StringBuffer | Методите на StringBuffer са безопасни за нишки и са синхронизирани. |
StringBuilder | Методите на StringBuilder не са безопасни за нишки и не са синхронизирани. |
Ефективност | |
низ | Снизът е бърз. |
StringBuffer | StringBuffer е бавен. |
StringBuilder | StringBuilder е бърз. |
Резюме – String срещу StringBuffer срещу StringBuilder в Java
String, StringBuffer и StringBuilder изглеждат едни и същи, но имат различни значения. Всичко това са Java класове. Разликата между String, StringBuffer и StringBuilder в Java е, че String е клас за създаване на обект от тип String, който е набор от знаци, StringBuffer е клас, който се използва за модифициране на низове и осигуряване на безопасност на нишката, докато StringBuilder е клас, който се използва за модифициране на низове, което не осигурява безопасност на нишката.
Изтеглете PDF низ срещу StringBuffer срещу StringBuilder в Java
Можете да изтеглите PDF версия на тази статия и да я използвате за офлайн цели според бележката за цитиране. Моля, изтеглете PDF версия тук Разлика между String StringBuffer и StringBuilder в Java