当前位置: 首页 > 知识库问答 >
问题:

StringBuilder是否在每个操作中创建新字符串?

关正雅
2023-03-14

使用此代码创建了多少个对象?-我知道3个字符串文本在字符串常量池中,StringBuilder对象在堆中,但当我调用reverse()、insert()或append()时,它会在池中创建一个新字符串吗?

StringBuilder sb = new StringBuilder("abc");
sb.append("def").reverse().insert(3, "---");
System.out.println( sb );

共有3个答案

从焱
2023-03-14
StringBuilder sb = new StringBuilder("abc");
sb.append("def").reverse().insert(3, "---");
System.out.println( sb );

在堆中只会创建一个StringBuilder对象,无论该类提供的方法是append、reverse等。

无论您使用toString()方法将分配的内存转换为String,都不会更改。

蒋鸿文
2023-03-14

创建的字符串:“abc”、“def”、“----”

StringBuilders已创建:sb

sb.append("def")。反向()。插入(3, "---")不创建新对象,只是编辑StringBuilder的内部缓冲区(这就是为什么使用StringBuilder的性能建议)。

龙浩博
2023-03-14

StringBuilder仅在对其调用toString()时才会创建新字符串。在此之前,它会保留一个包含所有添加元素的char[]数组。

您执行的任何操作,如insertreverse,都会在该数组上执行。

 类似资料:
  • create 当你刚起步或者只是想要测试一些东西时,倾向于从 create() 操作符入手。它接收一个有 observer 参数的函数。在前面的一些章节中已提及过,比如 Observable 包装章节。函数签名如下: Rx.Observable.create([fn]) 示例如下: Rx.Observable.create(observer => { observer.next( 1 );

  • 创建 RxJS 的操作符可以有多种方式。在这个版本的 RxJS 中,性能是首要考虑因素,因此,在此库中将创建的操作符依附到现有结构中的这种方式可能不那么直截了当。这是一个尝试性的文档,以告诉你如何创建一个操作符,这个操作符可以是你自己使用,也可以是用来添加到库中。 想了解如何为本库开发一个自定义操作符,请参见下面。 自动动手来为终端用户提供自定义的操作符 指南 在大多数情况下,用户可能想要创建一个

  • 问题内容: 我的长字符串不适合屏幕的宽度。例如。 为了使阅读更容易,我想到了用这种方式编写它- 但是,我意识到第二种方法使用字符串连接,并会在内存中创建5个新字符串,这可能会导致性能下降。是这样吗 还是编译器足够聪明,以至于我只需要一个字符串就可以了?我如何避免这样做? 问题答案: 我意识到第二种方法使用字符串连接,并将在内存中创建5个新字符串,这可能会导致性能下降。 不,不会。由于这些是字符串文

  • 以下是我的问题: 请纠正我在上面的理解--我通过指定一个端口来打开一个套接字(),比方说8001,现在我的服务器将开始侦听这个端口上的请求,现在它从一个客户端得到一个请求,类似于,所以一旦它接受连接,它将创建一个本地端口,比方说10001,所以现在这个客户端请求将通过10001接受(或者换句话说,与客户端的连接将通过端口10001建立),而8001将再次空闲并侦听新的请求? 那么,这是否意味着使用

  • 所以,我在网上阅读,您不能使配置最终,因为CGLIB扩展了类以创建代理。但是,我阅读了@Scope的文档,默认的proxyMethod值是没有创建代理(此处链接-https://docs.spring.io/springframework/docs/current/javadoc-api/org/springframework/context/annotation/scope.html)。 所以,

  • 主要内容:RxJava 创建操作符 介绍,RxJava 创建操作符 示例RxJava 创建操作符 介绍 以下是用于创建 Observable 的运算符。 运算符 描述 Create 从头开始创建一个 Observable 并允许以编程方式调用观察者方法。 Defer 在观察者订阅之前不要创建 Observable。为每个观察者创建一个新的 observable。 Empty/Never/Throw 创建一个行为受限的 Observable。 From 将对象/数据结构