Klíčový rozdíl – String vs StringBuffer vs StringBuilder v Javě
String, StringBuffer a String Builder jsou třídy v Javě. Řetězec je široce používán v programování Java. Jakmile je objekt String vytvořen, není možné jej změnit. Pokaždé, když dojde ke změně řetězce, vytvoří se nový řetězec. I když se jedná o zřetězení k existujícímu řetězci, vytvoří nový řetězec. To způsobuje plýtvání pamětí. Třídy StringBuffer a StringBuilder v Javě se používají k úpravě String. Klíčový rozdíl mezi String, StringBuffer a StringBuilder v Javě je ten, že String je třída pro vytvoření objektu typu String, který je posloupností znaků, StringBuffer je třída, která se používá k úpravě Stringů, která zajišťuje bezpečnost vláken, a StringBuilder je třída. třída, která se používá k úpravě řetězců, které neposkytují bezpečnost vláken.
Co je String v Javě?
Třída String je v balíčku java.lang. Pokaždé, když programátor vytvoří řetězec, jedná se o objekt typu String. Řetězce mají neměnný význam, jakmile je objekt vytvořen, nelze jej změnit. Objekty vytvořené pomocí obalových tříd jako Integer, Byte, Float, Double jsou také neměnné. Řetězcový literál je uzavřen ve dvojitých uvozovkách. např. "Ahoj světe". Pokaždé, když je vytvořen řetězcový literál, Java Virtual Machine (JVM) zkontroluje fond konstant String. Pokud řetězec existuje, je vrácen odkaz na fond konstant řetězců. Pokud se jedná o nový řetězec, tento objekt se vytvoří ve fondu konstant řetězců.
Obrázek 01: Java program využívající String, StringBuffer a StringBuilder
Odkaz na níže uvedený kód.
String s1=“Dobrý den”;
s1=s1 + „Svět“;
System.out.println(s1);
V prvním příkazu s1 odkazuje na „Ahoj“ve fondu konstant řetězců. Ve druhém příkazu JVM nemění stávající řetězec. Místo toho vytvoří nový řetězec jako „Hello World“a s1 nyní tento nový řetězec označuje. Ukončující objekt „Ahoj“stále existuje ve fondu konstant řetězců.
Pokud existuje kód, který je, String s1=”Ahoj”;
Řetězec s2=s1;
s1, s2 oba budou odkazovat na objekt String „Ahoj“.
Co je StringBuffer v Javě?
Třída StringBuffer se používá k tomu, aby objekty String byly proměnlivé. Tyto objekty lze tedy upravovat. StringBuffer definuje čtyři konstruktory. StringBuffer(), StringBuffer(int size), StringBuffer(String str), StringBuffer (charSequence ch)
Odkaz na kód níže, StringBuffer s1=new StringBuffer(“Ahoj”);
s1.append(“Svět”);
System.out.println(s1);
V příkazu 1 odkazuje s1 na objekt „Ahoj“v hromadě. Objekt je měnitelný, protože je vytvořen pomocí StringBuffer. V příkazu 2 je „World“připojeno ke stejnému objektu typu „Hello“String.
Stringové objekty vytvořené pomocí třídy StringBuffer mohou šetřit paměť. StringBuffer poskytuje bezpečnost vláken, protože dvě vlákna nemohou současně přistupovat ke stejné metodě ve třídě StringBuffer. Bezpečnost vláken snižuje výkon StringBuffer. Třída StringBuffer obsahuje metody jako append(), insert(), reverse(), replace().
Co je StringBuilder v Javě?
Třída StringBuilder se používá k tomu, aby objekty String byly proměnlivé. Tyto objekty lze tedy upravovat. Funkce je podobná StringBuffer, ale nezajišťuje bezpečnost vláken. StringBuilder má konstruktory jako StringBuilder(), StringBuilder(int size), StringBuilder(String str).
Odkaz na kód níže.
StringBuilder s1=nový StringBuilder(“Dobrý den”);
s1.append(“Svět”);
System.out.println(s1);
V příkazu 1 odkazuje s1 na objekt „Ahoj“v hromadě. Objekt je proměnlivý, protože je vytvořen pomocí StringBuilder. V příkazu 2 je „World“připojen ke stejnému objektu typu „Hello“String. Nedochází k vytvoření zcela nového objektu String.
Stringové objekty vytvořené pomocí třídy StringBuilder mohou šetřit paměť. Na rozdíl od StringBuffer, StringBuilder neposkytuje zabezpečení vláken, protože dvě vlákna mohou současně přistupovat ke stejné metodě ve třídě StringBuilder. Třída StringBuilder obsahuje metody jako append(), insert(), reverse(), replace().
Jaká je podobnost mezi String, StringBuffer a StringBuilder v Javě?
Všechny lze použít k vytvoření řetězců
Jaký je rozdíl mezi String StringBuffer a StringBuilder v Javě?
String vs StringBuffer vs StringBuilder |
|
String | String je třída Java, která se používá k vytvoření objektu typu String, což je sekvence znaků. |
StringBuffer | StringBuffer je třída Java, která se používá k vytváření objektů String, které lze upravit s bezpečností vláken. |
StringBuilder | StringBuilder je třída, která se používá k vytváření objektů typu string, které lze upravovat bez zabezpečení vlákna. |
Mutability | |
String | Řetězec je neměnná třída. |
StringBuffer | StringBuffer je měnitelná třída. |
StringBuilder | StringBuilder je měnitelná třída. |
Bezpečnost nití | |
String | Metody String jsou bezpečné pro vlákna. |
StringBuffer | Metody StringBufferu jsou bezpečné a synchronizované. |
StringBuilder | Metody StringBuilderu nejsou bezpečné ve vláknech a nejsou synchronizované. |
Výkon | |
String | Řetězec je rychlý. |
StringBuffer | StringBuffer je pomalý. |
StringBuilder | StringBuilder je rychlý. |
Shrnutí – String vs StringBuffer vs StringBuilder v Javě
String, StringBuffer a StringBuilder se zdají být stejné, ale mají různé významy. Všechny tyto třídy jsou Java. Rozdíl mezi String, StringBuffer a StringBuilder v Javě je v tom, že String je třída pro vytvoření objektu typu String, což je sada znaků, StringBuffer je třída, která se používá k úpravě řetězců a zajištění bezpečnosti vláken, zatímco StringBuilder je třída třída, která se používá k úpravě řetězců, která neposkytuje bezpečnost vláken.
Stáhněte si PDF String vs StringBuffer vs StringBuilder v Javě
Můžete si stáhnout PDF verzi tohoto článku a použít ji pro offline účely podle citace. Stáhněte si PDF verzi zde Rozdíl mezi String StringBuffer a StringBuilder v Javě