字符串缓冲区(string stringbuffer)和java中的stringbuilder(stringbuilder in java)的区别

String、StringBuffer和stringbuilder是Java中的类。字符串在Java编程中被广泛使用。一旦创建了字符串对象,就不可能更改它们。每次字符串发生更改时,它都会创建一个新字符串。即使是连接到现有字符串,它也会创建一个新字符串。这会导致内存浪费。使用Java中的StringBuffer和StringBuilder类来修改字符串。String、StringBuffer和Str...

关键区别–java中的string与stringbuffer与stringbuilder

String、StringBuffer和stringbuilder是Java中的类。字符串在Java编程中被广泛使用。一旦创建了字符串对象,就不可能更改它们。每次字符串发生更改时,它都会创建一个新字符串。即使是连接到现有字符串,它也会创建一个新字符串。这会导致内存浪费。使用Java中的StringBuffer和StringBuilder类来修改字符串。String、StringBuffer和StringBuilder在Java中的主要区别在于String是一个类,用于创建String类型的对象,StringBuffer是一个用于修改提供线程安全性的字符串的类,StringBuilder是一个用于修改不提供线程安全性的字符串的类。

目录

1. 概述和主要区别
2. Java中的字符串是什么
3. 什么是Java中的StringBuffer
4. 什么是Java中的StringBuilder
5. StringBuilder与StringBuffer中字符串的相似性
6. 并列比较——以表格形式显示的Java中的String与StringBuffer与StringBuilder
7. 摘要

什么是java字符串(string in java)?

字符串类在java.lang语言包裹。程序员每次创建字符串时,它都是String类型的对象。字符串是不可变的,这意味着一旦创建了对象,就不能更改它。使用诸如Integer、Byte、Float、Double等包装类创建的对象也是不可变的。字符串文字用双引号括起来。e、 g.“你好世界”。每次创建字符串文本时,Java虚拟机(JVM)都会检查字符串常量池。如果字符串存在,则返回对字符串常量池的引用。如果是新字符串,则在字符串常量池中创建该对象。

字符串缓冲区(string stringbuffer)和java中的stringbuilder(stringbuilder in java)的区别

图01:使用String、StringBuffer和StringBuilder的Java程序

参考下面的代码。

String s1=“你好”;

s1=s1+“世界”;

系统输出打印项数(s1);

在第一条语句中,s1指的是字符串常量池中的“Hello”。在第二条语句中,JVM不更改现有的字符串。相反,它创建了一个新字符串“Hello World”,s1现在引用这个新字符串。现有的“Hello”对象仍然存在于字符串常量池中。

如果有密码,

String s1=“你好”;

串s2=s1;

s1和s2都将引用字符串对象“Hello”。

什么是java中的stringbuffer(stringbuffer in java)?

StringBuffer类用于使字符串对象可变。因此,可以修改这些对象。StringBuffer定义了四个构造函数。StringBuffer()、StringBuffer(int size)、StringBuffer(String str)、StringBuffer(charSequence[]ch)

参考下面的代码,

StringBuffers1=新StringBuffer(“Hello”);

s1.追加(“世界”);

System.out.println(s1);

在语句1中,s1引用堆中的“Hello”对象。对象是可变的,因为它是使用StringBuffer创建的。在语句2中,“World”被附加到同一个“Hello”字符串对象之后。

使用StringBuffer类创建的字符串对象可以节省内存。StringBuffer提供线程安全性,因为两个线程不能同时访问StringBuffer类中的同一个方法。线程安全性会降低StringBuffer性能。StringBuffer类包含append()、insert()、reverse()、replace()等方法。

什么是java中的stringbuilder(stringbuilder in java)?

StringBuilder类用于使字符串对象可变。因此,可以修改这些对象。该功能类似于StringBuffer,但这不提供线程安全性。StringBuilder有一些构造函数,比如StringBuilder()、StringBuilder(int size)、StringBuilder(StringStr)。

请参阅下面的代码。

StringBuilder s1=新建StringBuilder(“你好”);

s1.追加(“世界”);

System.out.println(s1);

在语句1中,s1引用堆中的“Hello”对象。对象是可变的,因为它是使用StringBuilder创建的。在语句2中,“World”被附加到同一个“Hello”字符串对象之后。不需要创建全新的字符串对象。

使用StringBuilder类创建的字符串对象可以节省内存。与StringBuffer不同,StringBuilder不提供线程安全性,因为两个线程可以同时访问StringBuilder类中的同一个方法。StringBuilder类包含append()、insert()、reverse()、replace()等方法。

什么是java中string、stringbuffer和stringbuilder的相似性(the similarity between string, stringbuffer and stringbuilder in java)?

  • 所有这些都可以用来创建字符串。

字符串缓冲区(string stringbuffer)和java中的stringbuilder(stringbuilder in java)的区别

String vs StringBuffer vs StringBuilder
字符串 string是一个Java类,用于创建string类型的对象,string是一个字符序列。
字符串缓冲区 StringBuffer是一个Java类,用于创建字符串对象,可以使用线程安全性对其进行修改。
字符串拼接 StringBuilder是一个用于创建字符串对象的类,可以在没有线程安全性的情况下对其进行修改。
易变性
字符串 字符串是一个不可变的类。
字符串缓冲区 StringBuffer是一个可变类。
字符串拼接 StringBuilder是一个可变类。
螺纹安全性
字符串 字符串的方法是线程安全的。
字符串缓冲区 StringBuffer的方法是线程安全的和同步的。
字符串拼接 StringBuilder的方法不是线程安全的,也不是同步的。
性能
字符串 绳子快了。
字符串缓冲区 StringBuffer速度慢。
字符串拼接 StringBuilder速度很快。

总结 - 一串(string) vs. 字符串缓冲区(stringbuffer)

String、StringBuffer和StringBuilder看起来是相同的,但是它们有不同的含义。所有这些都是Java类。在Java中String、StringBuffer和StringBuilder的区别在于,String是创建String类型的对象的类,String是一组字符,StringBuffer是用来修改字符串并提供线程安全性的类,而StringBuilder是一个用于修改不提供线程安全性的字符串的类。

下载pdf string vs stringbuffer vs stringbuilder

你可以下载这篇文章的PDF版本,并按照引文说明离线使用。请在这里下载PDF版本StringBuffer和Java中StringBuilder的区别

引用

  • 发表于 2020-10-02 19:22
  • 阅读 ( 315 )
  • 分类:IT

你可能感兴趣的文章

变量(variables)和java中的数据字面值(data literals in java)的区别

...有各种类型的文字。它们是整数文本、浮点文本、字符和字符串文本。整型字面值用于初始化整型数据类型(如byte、short、int和long)的变量。浮点字面值用于初始化数据类型为float和double的变量。浮点文字以f或f结尾,它是float...

  • 发布于 2020-10-19 08:52
  • 阅读 ( 261 )

这(this)和超级java(super in java)的区别

...造函数。参考以下程序。 公务舱总管{ 公共静态void main(字符串[]args){ B obj=新B(); } } A级{ A(){ System.out.println(“A”); } } B类延伸到A{ B(){ 超级(); System.out.println(“B”); } } 根据上面的程序,类A有一个构造函...

  • 发布于 2020-10-19 18:17
  • 阅读 ( 386 )

继承(inheritance)和java接口(interface in java)的区别

...sub(),它属于B类,sum()属于A类。 公共静态void main(String[]args){ B obj=新B(); 目标子公司(); 目标金额(); } 有不同类型的遗传。它们是单继承、多重继承、多级继承和层次继承。在单一继承中,有一个基类和一个派生类。...

  • 发布于 2020-10-25 00:02
  • 阅读 ( 496 )

如何用代码读写xml文件

... static private String getCharacterData(Node parent){ StringBuilder text = new StringBuilder(); if ( parent == null ) return text.toString(); NodeList children = parent.getChildNodes(); for (int k = 0, kn = children.getLength() ; k < kn ; k++) { Node child = children...

  • 发布于 2021-03-12 02:25
  • 阅读 ( 409 )

java8lambdas简介

...一个lambda表达式,它创建了一个用于不区分大小写地比较字符串的比较器。 ...

  • 发布于 2021-03-12 08:09
  • 阅读 ( 247 )

关于javarmi注册中心以及如何使用它的所有内容

...并提供greet()方法,如图所示。它使用一个简单的格式字符串来格式化问候语。 ...

  • 发布于 2021-03-12 15:58
  • 阅读 ( 312 )

java异常:您处理的对吗?

... StringBuilder **uf = new StringBuilder("Stack Trace: ");for (StackTraceElement el : ex.getStackTrace()) { **uf.append(el.getClassName() + "." + el.getMethodName()).append("");}log.warning(**uf.toString()); ...

  • 发布于 2021-03-13 09:11
  • 阅读 ( 261 )

数组(array)和一串(string)的区别

...主要区别在于数组可以具有任何长度的任何数据类型,而字符串通常是以空字符“\0”结尾的ASCII字符。两者在不同编程语言中的实现方式都有很大的不同。数组和字符串在java中的工作方式与C++中的工作方式非常不同。本文介绍...

  • 发布于 2021-06-25 10:17
  • 阅读 ( 1397 )

字节流(byte stream)和java中的字符流(character stream in java)的区别

...目标。 导入java.io.*; 公共课程{   public static void main(字符串args[])引发IOException{ FileInputStream in=null; FileOutputStream out=null;   试试看{ in=新文件inputstream(“input.txt”); out=new FileOutputStream(“output.txt”); 内景c; while((...

  • 发布于 2021-07-01 09:22
  • 阅读 ( 722 )

文件读取器(filereader)和java中的bufferedreader(bufferedreader in java)的区别

...对象。 此外,有两种方法可以编写构造函数。 FileReader(字符串文件)–程序员将文件作为字符串传递。它以读取模式打开文件,如果文件不可用,则抛出FileNotFoundException。 FileReader(文件)–程序员传递文件实例。它以读取模...

  • 发布于 2021-07-01 12:28
  • 阅读 ( 266 )
aqc00526
aqc00526

0 篇文章

相关推荐