Heim Java javaLernprogramm Der Unterschied zwischen Stringbuffer und Stringbuilder

Der Unterschied zwischen Stringbuffer und Stringbuilder

Jun 04, 2019 pm 01:19 PM
stringbuffer

Egal, ob Sie mit Java oder Android arbeiten, Sie werden mit diesem Problem normalerweise nicht zu kämpfen haben. Diese Frage ist in Vorstellungsgesprächen ein Muss Heute werde ich es zusammenfassen.

Der Unterschied zwischen Stringbuffer und Stringbuilder

Unterschiede zwischen StringBuffer und StringBuilder

Die Methoden und Funktionen in StringBuffer und StringBuilder sind völlig gleichwertig, mit Ausnahme der Methoden in StringBuffer Die meisten von ihnen werden mit dem Schlüsselwort synchronisiert geändert, sodass sie Thread-sicher sind, gleichzeitige Vorgänge unterstützen und für die Verwendung in Multithreads geeignet sind. StringBuilder unterstützt keine gleichzeitigen Vorgänge, ist linear unsicher und nicht für die Verwendung in Multithreads geeignet. Die neu eingeführte StringBuilder-Klasse ist nicht threadsicher, aber ihre Leistung in einem einzelnen Thread ist höher als die von StringBuffer. (Empfohlenes Lernen: JAVA-Video-Tutorial)

Als nächstes füge ich direkt den Code des Testprozesses und der Ergebnisse ein, was auf einen Blick klar ist:

public class StringTest {
 
	public static String BASEINFO = "Mr.Y";
	public static final int COUNT = 2000000;
 
	/**
	* 执行一项String赋值测试
	*/
	public static void doStringTest() {
 
		String str = new String(BASEINFO);
		long starttime = System.currentTimeMillis();
		for (int i = 0; i < COUNT / 100; i++) {
			str = str + "miss";
		}
		long endtime = System.currentTimeMillis();
		System.out.println((endtime - starttime)
				+ " millis has costed when used String.");
	}
 
	/**
	* 执行一项StringBuffer赋值测试
	*/
	public static void doStringBufferTest() {
 
		StringBuffer sb = new StringBuffer(BASEINFO);
		long starttime = System.currentTimeMillis();
		for (int i = 0; i < COUNT; i++) {
			sb = sb.append("miss");
		}
		long endtime = System.currentTimeMillis();
		System.out.println((endtime - starttime)
				+ " millis has costed when used StringBuffer.");
	}
 
	/**
	* 执行一项StringBuilder赋值测试
	*/
	public static void doStringBuilderTest() {
 
		StringBuilder sb = new StringBuilder(BASEINFO);
		long starttime = System.currentTimeMillis();
		for (int i = 0; i < COUNT; i++) {
			sb = sb.append("miss");
		}
		long endtime = System.currentTimeMillis();
		System.out.println((endtime - starttime)
				+ " millis has costed when used StringBuilder.");
	}
 
	/**
	* 测试StringBuffer遍历赋值结果
	* 
	* @param mlist
	*/
	public static void doStringBufferListTest(List<String> mlist) {
		StringBuffer sb = new StringBuffer();
		long starttime = System.currentTimeMillis();
		for (String string : mlist) {
			sb.append(string);
		}
		long endtime = System.currentTimeMillis();
		System.out.println(sb.toString() + "buffer cost:"
				+ (endtime - starttime) + " millis");
	}
 
	/**
	* 测试StringBuilder迭代赋值结果
	* 
	* @param mlist
	*/
	public static void doStringBuilderListTest(List<String> mlist) {
		StringBuilder sb = new StringBuilder();
		long starttime = System.currentTimeMillis();
		for (Iterator<String> iterator = mlist.iterator(); iterator.hasNext();) {
			sb.append(iterator.next());
		}
 
		long endtime = System.currentTimeMillis();
		System.out.println(sb.toString() + "builder cost:"
				+ (endtime - starttime) + " millis");
	}
 
	public static void main(String[] args) {
		doStringTest();
		doStringBufferTest();
		doStringBuilderTest();
 
		List<String> list = new ArrayList<String>();
		list.add(" I ");
		list.add(" like ");
		list.add(" BeiJing ");
		list.add(" tian ");
		list.add(" an ");
		list.add(" men ");
		list.add(" . ");
 
		doStringBufferListTest(list);
		doStringBuilderListTest(list);
	}
 
}
Nach dem Login kopieren

Sehen Sie sich die Ausführungsergebnisse an:

2711 millis has costed when used String.
211 millis has costed when used StringBuffer.
141 millis has costed when used StringBuilder.
 I  like  BeiJing  tian  an  men  . buffer cost:1 millis
 I  like  BeiJing  tian  an  men  . builder cost:0 millis
Nach dem Login kopieren

Wie aus den obigen Ergebnissen ersichtlich ist, unabhängig vom Multithreading, wenn String-Objekte verwendet werden (ich habe Count/100 eingegeben), Die Ausführungszeit ist länger als bei den anderen beiden, und der Unterschied zwischen der Verwendung von StringBuffer-Objekten und der Verwendung von StringBuilder-Objekten ist ebenfalls offensichtlich. Es ist ersichtlich, dass wir, wenn unser Programm in einem einzelnen Thread ausgeführt wird oder keine Thread-Synchronisierungsprobleme berücksichtigt werden müssen, der Verwendung der StringBuilder-Klasse Vorrang einräumen sollten, wenn wir die Thread-Sicherheit gewährleisten möchten. Dies ist natürlich StringBuffer.

Wie aus den Testergebnissen der folgenden Liste ersichtlich ist, gibt es bis auf die unterschiedliche Unterstützung für Multithreading nahezu keinen Unterschied in der Verwendung und den Ergebnissen dieser beiden Klassen.

Weitere technische Artikel zum Thema JAVA finden Sie in der Spalte JAVA-Entwicklungs-Tutorial, um mehr darüber zu erfahren!

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Stringbuffer und Stringbuilder. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie vergleichen wir in Java StringBuilder und StringBuffer? Wie vergleichen wir in Java StringBuilder und StringBuffer? Aug 28, 2023 pm 03:57 PM

StringBuffer-Objekte können im Allgemeinen sicher in Umgebungen mit mehreren Threads verwendet werden, in denen mehrere Threads möglicherweise gleichzeitig versuchen, auf dasselbe StringBuffer-Objekt zuzugreifen. StringBuilder ist ein threadsicherer Ersatz für die StringBuffer-Klasse, der viel schneller arbeitet, da er über keine synchronisierten > Methoden verfügt. Wenn wir viele Zeichenfolgenoperationen in einem einzelnen Thread ausführen, kann die Verwendung dieser Klasse die Leistung verbessern. Beispiel publicclassCompareBuilderwithBufferTest{ publicstaticvoidmain(String[]a

Konvertieren Sie StringBuffer mit der toString()-Methode der StringBuffer-Klasse in einen String Konvertieren Sie StringBuffer mit der toString()-Methode der StringBuffer-Klasse in einen String Jul 25, 2023 pm 06:45 PM

Konvertieren Sie einen StringBuffer mit der toString()-Methode der StringBuffer-Klasse. In Java ist die StringBuffer-Klasse eine Klasse, die zur Verarbeitung veränderlicher Strings verwendet wird. Sie bietet viele praktische Methoden zum Ändern und Bearbeiten von Strings. Wenn wir ein StringBuffer-Objekt in einen String konvertieren müssen, können wir dazu die Methode toString() verwenden. Die toString()-Methode der StringBuffer-Klasse gibt a zurück

Verwenden Sie die Methode reverse() der Klasse StringBuffer, um einen String umzukehren Verwenden Sie die Methode reverse() der Klasse StringBuffer, um einen String umzukehren Jul 24, 2023 pm 04:41 PM

Verwenden Sie die Methode reverse() der StringBuffer-Klasse, um einen String umzukehren. Beim Programmieren müssen wir häufig einige Operationen an Strings ausführen, beispielsweise das Umkehren von Strings. In Java können Sie die Methode reverse() der Klasse StringBuffer verwenden, um eine String-Umkehr zu erreichen. Werfen wir einen Blick auf die Verwendung dieser Methode. Zuerst müssen wir ein StringBuffer-Objekt erstellen und die umzukehrende Zeichenfolge als Parameter an seinen Konstruktor übergeben, wie unten gezeigt

Wie verwende ich die String-Klasse, StringBuffer und StringBuilder in Java? Wie verwende ich die String-Klasse, StringBuffer und StringBuilder in Java? Apr 21, 2023 pm 07:22 PM

Grundkonzepte der String-Klasse Die String-Klasse ist ein Referenzdatentyp, kein Basisdatentyp. In Java handelt es sich um ein String-Objekt, solange es in „“ (doppelte Anführungszeichen) eingeschlossen ist. Java legt fest, dass Zeichenfolgen in doppelten Anführungszeichen unveränderlich sind, was bedeutet, dass „abc“ von der Geburt bis zum Tod nicht zu „abcd“ oder „ab“ werden kann. Im JDK werden in doppelte Anführungszeichen eingeschlossene Zeichenfolgen im Zeichenfolgenkonstantenpool im Methodenbereich gespeichert. (Da in der tatsächlichen Entwicklung Zeichenfolgen sehr häufig verwendet werden, werden Zeichenfolgen aus Gründen der Ausführungseffizienz im String-Konstantenpool im Methodenbereich platziert.

Verwenden Sie die Methode substring() der Klasse StringBuffer, um die Teilzeichenfolge eines Teils der Zeichenfolge abzurufen. Verwenden Sie die Methode substring() der Klasse StringBuffer, um die Teilzeichenfolge eines Teils der Zeichenfolge abzurufen. Jul 24, 2023 pm 12:41 PM

Verwenden Sie die Methode substring() der Klasse StringBuffer, um einen Teilstring eines Strings abzurufen. In der Java-Programmierung ist es oft notwendig, Strings zu verarbeiten und zu bedienen. Die StringBuffer-Klasse ist eine häufig verwendete String-Klasse, die eine Reihe praktischer Methoden zum Betreiben von Strings bereitstellt. Unter diesen ist die Methode substring() eine sehr häufig verwendete Methode, mit der ein Teil des Inhalts einer Zeichenfolge, also eine Teilzeichenfolge, abgerufen werden kann. Im Folgenden wird die Verwendung der StringBuffer-Klasse vorgestellt

So verwenden Sie StringBuffer und StringBuilder in Java So verwenden Sie StringBuffer und StringBuilder in Java Jun 02, 2023 pm 03:01 PM

Wenn Sie Zeichenfolgen ändern, müssen Sie die Klassen StringBuffer und StringBuilder verwenden. Im Gegensatz zur String-Klasse können Objekte der StringBuffer- und StringBuilder-Klassen mehrmals geändert werden, ohne dass neue unbenutzte Objekte erstellt werden. StringBuffer: Bei Verwendung der StringBuffer-Klasse wird jedes Mal das StringBuffer-Objekt selbst bearbeitet, anstatt ein neues Objekt zu generieren. Wenn Sie also die Zeichenfolge ändern müssen, wird empfohlen, StringBuffer zu verwenden. StringBuilder: Die StringBuilder-Klasse wurde in Java5 vorgeschlagen und ähnelt S

Kehren Sie die Reihenfolge der Zeichen in einer Zeichenfolge um, indem Sie die Methode reverse() der Klasse StringBuffer verwenden Kehren Sie die Reihenfolge der Zeichen in einer Zeichenfolge um, indem Sie die Methode reverse() der Klasse StringBuffer verwenden Jul 26, 2023 pm 10:10 PM

Kehren Sie die Reihenfolge der Zeichen in einer Zeichenfolge um, indem Sie die Methode reverse() der StringBuffer-Klasse verwenden. In Java gibt es verschiedene Möglichkeiten, die Reihenfolge der Zeichen in einer Zeichenfolge umzukehren. Eine der einfachen und effizienten Methoden ist die Verwendung der reverse()-Methode der StringBuffer-Klasse. In diesem Artikel wird erläutert, wie Sie diese Methode zum Umkehren von Zeichenfolgen verwenden, und es werden relevante Codebeispiele bereitgestellt. Die StringBuffer-Klasse ist eine veränderbare Klasse in Java, die zur Verarbeitung von Zeichenfolgen verwendet wird. Im Gegensatz zur String-Klasse

Fügen Sie Inhalte in eine Zeichenfolge in Java ein, indem Sie die Methode insert() der Klasse StringBuffer verwenden Fügen Sie Inhalte in eine Zeichenfolge in Java ein, indem Sie die Methode insert() der Klasse StringBuffer verwenden Jul 24, 2023 am 11:34 AM

Verwenden Sie die insert()-Methode der StringBuffer-Klasse, um in Java Inhalte in einen String einzufügen. In der Java-Programmierung ist die StringBuffer-Klasse eine sehr häufig verwendete String-Manipulationsklasse. Es bietet eine Vielzahl von Methoden zum Ändern von Zeichenfolgen, unter denen die Methode insert() eine sehr praktische Methode zum Einfügen von Inhalten in eine Zeichenfolge ist. Die Funktion der Methode insert() besteht darin, ein Zeichen, ein Zeichenarray, eine Zeichenfolge oder eine aus anderen Datentypen konvertierte Zeichenfolge an der angegebenen Position einzufügen.

See all articles