찾다
Javajava지도 시간스트링버퍼와 스트링빌더의 차이점

Java를 사용하든 Android를 사용하든 이 문제는 피할 수 없습니다. 실제로 개발 과정에서 이 질문은 인터뷰에서 꼭 필요한 질문입니다. , 요약하겠습니다.

스트링버퍼와 스트링빌더의 차이점

StringBuffer와 StringBuilder의 차이점

StringBuffer와 StringBuilder의 메서드와 함수는 완전히 동일합니다. 단, StringBuffer의 메서드 대부분은 동기화된 키워드로 수정되므로 스레드로부터 안전하고 지원됩니다. 동시 작업, 멀티스레딩에 사용하기에 적합합니다. StringBuilder는 동시 작업을 지원하지 않으며 선형적으로 안전하지 않으며 다중 스레드에서 사용하기에 적합하지 않습니다. 새로 도입된 StringBuilder 클래스는 스레드로부터 안전하지 않지만 단일 스레드에서의 성능은 StringBuffer보다 높습니다. (추천 학습: JAVA 비디오 튜토리얼)

다음으로, 테스트 과정과 결과의 코드를 직접 붙여넣었는데, 한눈에 알 수 있습니다:

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  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);
	}
 
}</string></string></string></string>

실행 결과 보기:

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

As 위의 결과를 보면 멀티스레딩과 상관없이 String 객체를 사용할 경우(Count/100을 넣었습니다) 실행 시간이 다른 두 객체보다 길고 StringBuffer 객체를 사용할 때와 StringBuilder 객체를 사용할 때의 차이도 확연합니다. . 프로그램이 단일 스레드에서 실행 중이거나 스레드 동기화 문제를 고려할 필요가 없는 경우 스레드 안전성을 보장하려면 StringBuilder 클래스를 사용하는 데 우선 순위를 두어야 한다는 것을 알 수 있습니다.

아래 List의 테스트 결과에서 볼 수 있듯이 멀티스레딩에 대한 지원이 다른 점을 제외하면 두 클래스의 사용법과 결과에는 거의 차이가 없습니다.

더 많은 JAVA 관련 기술 기사를 보려면 JAVA 개발 튜토리얼 칼럼을 방문하여 알아보세요!

위 내용은 스트링버퍼와 스트링빌더의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
在Java中,我们如何比较StringBuilder和StringBuffer?在Java中,我们如何比较StringBuilder和StringBuffer?Aug 28, 2023 pm 03:57 PM

StringBuffer对象通常可以安全地在多线程环境中使用,其中多个线程可能会尝试访问同一个StringBuffer对象同时。StringBuilder是线程安全的StringBuffer类的替代品,它的工作速度要快得多,因为它没有同步>方法。如果我们在单个线程中执行大量字符串操作,则使用此类可以提高性能。示例publicclassCompareBuilderwithBufferTest{&nbsp;&nbsp;publicstaticvoidmain(String[]a

使用StringBuffer类的toString()方法将StringBuffer转换为字符串使用StringBuffer类的toString()方法将StringBuffer转换为字符串Jul 25, 2023 pm 06:45 PM

使用StringBuffer类的toString()方法将StringBuffer转换为字符串在Java中,StringBuffer类是用于处理可变字符串的类,它提供了许多方便的方法来修改和操作字符串。当我们需要将一个StringBuffer对象转换为字符串时,可以使用toString()方法来实现。StringBuffer类的toString()方法返回一

使用StringBuffer类的reverse()方法来反转字符串使用StringBuffer类的reverse()方法来反转字符串Jul 24, 2023 pm 04:41 PM

使用StringBuffer类的reverse()方法来反转字符串在编程中,我们经常需要对字符串进行一些操作,例如反转字符串。在Java中,可以使用StringBuffer类的reverse()方法来实现字符串反转。下面让我们一起来了解一下这个方法的使用。首先,我们需要创建一个StringBuffer对象,将要反转的字符串作为参数传递给它的构造函数,如下所示

如何在Java中使用String类、StringBuffer和StringBuilder?如何在Java中使用String类、StringBuffer和StringBuilder?Apr 21, 2023 pm 07:22 PM

String类基本概念String类属于引用数据类型,不属于基本数据类型。在Java中只要是""(双引号)中的,都是String对象。java中规定,双引号中的字符串是不可变的,也就是说"abc"自出生到死亡都不可能变成"abcd",也不能变成"ab"。在JDK中双引号括起来的字符串都是存储在方法区的字符串常量池当中的。(因为在实际开发中,字符串的使用频率十分高,为了执行效率,就把字符串放在了方法区中的字符串常量池当

Java中StringBuffer和StringBuilder怎么使用Java中StringBuffer和StringBuilder怎么使用Jun 02, 2023 pm 03:01 PM

当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类。和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuffer:在使用StringBuffer类时,每次都会对StringBuffer对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用StringBuffer。StringBuilder:StringBuilder类在Java5中被提出,它和S

使用StringBuffer类的insert()方法在Java中向字符串中插入内容使用StringBuffer类的insert()方法在Java中向字符串中插入内容Jul 24, 2023 am 11:34 AM

使用StringBuffer类的insert()方法在Java中向字符串中插入内容在Java编程中,StringBuffer类是一个非常常用的字符串操作类。它提供了多种方法来修改字符串,其中insert()方法是一种非常方便用于向字符串中插入内容的方法。insert()方法的作用是在指定的位置插入一个字符、一个字符数组、一个字符串或者其他数据类型转化的字符串

使用StringBuffer类的reverse()方法反转字符串中的字符顺序使用StringBuffer类的reverse()方法反转字符串中的字符顺序Jul 26, 2023 pm 10:10 PM

使用StringBuffer类的reverse()方法反转字符串中的字符顺序在Java中,有多种方法可以反转字符串中的字符顺序。其中一个简单而高效的方法是使用StringBuffer类的reverse()方法。本文将介绍如何使用这个方法来实现字符串反转,并提供相关的代码示例。StringBuffer类是Java中用于处理字符串的可变类。与String类不同,

使用StringBuffer类的substring()方法获取字符串部分内容的子串使用StringBuffer类的substring()方法获取字符串部分内容的子串Jul 24, 2023 pm 12:41 PM

使用StringBuffer类的substring()方法获取字符串部分内容的子串在Java编程中,经常需要对字符串进行处理和操作。StringBuffer类是一个常用的字符串类,它提供了一系列方便的方法来操作字符串。其中,substring()方法是一个非常常用的方法,可以用来获取字符串中的一部分内容,即子串。下面将介绍如何使用StringBuffer类的

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경