一串(string)和java中的stringbuffer(stringbuffer in java)的区别

缓冲器是存储器中用于存储来自外围设备的数据流的部分。然后从这个缓冲区中收集数据流并存储在变量中。流可以定义为连续的数据流。缓冲区非常有用,因为Java将所有内容作为字符串处理。...

什么是java中的缓冲区(a buffer in java)?

缓冲器是存储器中用于存储来自外围设备的数据流的部分。然后从这个缓冲区中收集数据流并存储在变量中。流可以定义为连续的数据流。缓冲区非常有用,因为Java将所有内容作为字符串处理。

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

Java中的字符串是由字符数组内部支持的对象。由于数组是不可变的(不能增长),字符串也是不可变的。无论何时对字符串进行更改,都会创建一个全新的字符串。

java字符串的特性

  • Java字符串对象是不可变的,即您不能在创建字符串后更改其值。
  • 字符串类在执行串联操作时速度较慢。
  • String类重写Object类的equals()方法。因此,您可以通过equals()方法比较两个字符串的内容。
  • String类使用字符串常量池。
  • 字符串很慢,当我们连接太多字符串时会消耗更多内存,因为每次它创建新实例时。

java stringbuffer的特性

  • Java StringBuffer是可变的,即在创建StringBufer之后,您可以更改StringButter的值。
  • StringBuffer类在执行串联操作时速度更快。
  • StringBuffer类不重写Object类的equals()方法。
  • StringBuffer使用堆内存。
  • 当我们连接字符串时,StringBuffer速度快,占用的内存更少。

为什么字符串在java中是final?

为什么字符串在Java中是不可变的或最终的。字符串在Java中是不可变的,因为字符串对象缓存在字符串池中。同时,字符串是最终的,因此没有人可以通过扩展和重写行为来损害字符串类的不变量,例如不变性、缓存、哈希代码计算等。

stringbuffer是如何实现的?

StringBuffer/StringBuilder通过创建所有字符串的数组并仅在必要时将它们复制回字符串,以更高效的方式实现。基本上跳过x+2x+3x直到(n-1)x。它需要执行的唯一复制操作发生在字符串准备复制时。

stringbuffer可以转换为字符串吗?

StringBuffer对象可以使用对象类的toString()方法转换为字符串。在上面的代码中,equals()方法将应用于字符串对象,但不应用于StringBuffer对象;也就是说,sb1.euqals(sb2)会引发错误。因此,要比较两个StringBuffer对象,需要将它们转换为字符串。

Also Read: == Operator vs equals ()

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

比较基础字符串缓冲区
存储串池堆内存
易变性不变的易变
表演执行串联时比StringBuffer慢执行串联时比字符串快
固定的可以增加
线程环境中的使用不在线程环境中使用在多线程环境中使用
同步不同步同步
语法字符串变量=“字符串”;字符串变量=新字符串(“字符串”);StringBuffer变量=新的StringBufer(“字符串”);

Also Read: Difference Between Throw And Throws

字符串缓冲区(stringbuffer) vs. 架线工(stringbuilder)

由于字符串在Java中是不可变的,所以每当我们进行串接、子字符串等字符串操作时,它会生成一个新字符串,并丢弃旧字符串进行垃圾收集。

这些是繁重的操作,在堆中产生大量垃圾。因此,Java提供了StringBuffer和StringBuilder类,用于字符串操作。

在Java1.4之前,StringBuffer是字符串操作的唯一选择。但是,它有一个缺点,它的所有公共方法都是同步的。StringBuffer提供线程安全性,但以性能为代价。

在大多数场景中,我们不在多线程环境中使用字符串。因此Java1.5引入了一个新的类StringBuilder,除了线程安全和同步之外,它与StringBuffer类似。

StringBuffer和StringBuilder是Java中的可变对象。它们为字符串操作提供了append()、insert()、delete()和substring()方法。

StringBuffer和StringBuilder之间的主要区别在于StringBufer是线程安全的,而StringBuilders不是。这意味着,如果不同的线程正在访问/修改StringBuffer的同一实例,则它们的访问是同步的,因此结果总是可预测的。此外,由于StringBuilder是为单线程设计的,因此对它的操作比StringBuffer更快,否则它们的方法基本相同。

  • 发表于 2022-09-10 11:24
  • 阅读 ( 53 )
  • 分类:IT

你可能感兴趣的文章

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

...参考给定的java程序。 公共课本演示{ 公共静态void main(String[]args){ Myclass Myclass=新建Myclass(); 我的class.B(); } } 我的课{ 公共空间A(){ System.out.println(“A”); } 公共空间B(){ 系统输出原理(“B”); 这个.A(); }...

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

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

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

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

java8lambdas简介

... line -> {String[] x = pattern.split(line);return new Player(Integer.parseInt(x[0]), x[1], x[2], x[3], Integer.parseInt(x[4]));} ...

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

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

...java.rmi.RemoteException;public interface Greeting extends Remote{ public String greet(String name) throws RemoteException;} ...

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

java异常:您处理的对吗?

... private void loadFile(String filename){ FileReader in = new FileReader(filename);} ...

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

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

...它。 数组与字符串:比较图 总结 - 数组的(of array) vs. 一串(string) 字符串和数组非常相似,只是数组的长度是固定的,而字符串的元素数可以是可变的。从技术上讲,数组是一种特殊类型的变量,一次可以保存多个值。它们是...

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

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

...法是使用字节流和字符流。 覆盖的关键领域 1.什么是Java中的字节流–定义,功能2.什么是Java中的字符流–定义,功能3.Java中字节流和字符流的区别是什么–关键区别的比较 关键术语 字节流、字符流、Java 什么是java中的字节流(...

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

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

...些方法如下所示。 int read()–此方法读取单个字符。 String readLine()–读取一行文本。 void close()–此方法关闭输入流并释放关联的系统资源。 此外,有两种方法可以编写构造函数。 BufferedReader(读卡器rd)–它创建一个缓...

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

单线程(single thread)和java中的多线程(multi thread in java)的区别

...它被称为多线程应用程序。 覆盖的关键领域 1.什么是Java中的单线程-定义,功能2.什么是Java中的多线程-定义,功能3.Java中单线程和多线程的区别-主要区别比较 关键术语 Java,单线程,多线程,进程 什么是java中的单线程(single th...

  • 发布于 2021-07-01 14:09
  • 阅读 ( 560 )

下一个(next)和java中的nextline(nextline in java)的区别

...义 next()是java.util包的scanner类的一个方法,它返回一个String对象,它是scanner对象的完整标记。nextLine()是java.util包的Scanner类的一个方法,它返回一个字符串,对应于Scanner对象的跳过行。 功能 此外,nextLine能够读取用户输入...

  • 发布于 2021-07-01 22:50
  • 阅读 ( 464 )
ilpbly000966
ilpbly000966

0 篇文章

相关推荐