当前位置: 首页 > 面试题库 >

Java新String和StringBuilder在堆中的行为

鄂坚
2023-03-14
问题内容
  1. 字符串池是否驻留在堆上?如果是,字符串文字是否可以进行垃圾回收?

使用时new String("abc"),我们知道它会在堆上创建一个对象,并将String文字放置在String池中。所以我的第二个问题是:

  1. 是否new StringBuilder("abc")表现方法一样new String("abc")?如果是,StringBuilder如何处理字符串池中的字符串文字?

问题答案:

您会混淆编译时间,加载时间和运行时。

在类加载时,将字符串文字添加到常量池中。只需在类代码中的任何地方 提及 文字即可;您甚至不必执行该类中的任何代码行。

另一方面,表达式每次被计算都会new String("literal")产生一个新String实例。该实例不同于常量池中的实例,并且具有字符串值的副本。

StringBuilder``String在这方面的行为完全相同:它是使用字符串文字值的副本进行初始化的。



 类似资料:
  • 字符串池是否驻留在堆上?如果是,字符串文字是否符合垃圾回收机制? 当使用时,我们知道它会在堆上创建一个对象,并将String文字放在String池中。所以我的第二个问题是:

  • 本文向大家介绍在Java中将String转换为StringBuilder,包括了在Java中将String转换为StringBuilder的使用技巧和注意事项,需要的朋友参考一下 StringBuilder类的append()方法接受一个String值,并将其添加到当前对象。 要将String值转换为StringBuilder对象- 获取字符串值。 使用append()方法将获取的字符串追加到St

  • 以下是输出 第1行返回,第3行返回false。 我不明白为什么编译器不认为“name1”和“sb”包含相同的值 类似地,编译器并不认为“s”和“sb”包含相同的字符串(都是非原语)。 有人能解释一下line1和line3的输出吗?

  • 主要内容:总结在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。String 类是不可变类,即一旦一个 String 对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。 Java 提供了两个可变字符串类 StringBuffer 和 StringBuilder,中文翻译为“字符串缓冲区”。 StringBuilder 类是 JDK 1.5 新增的类,

  • 问题内容: 鉴于以下2种toString()实现方式,首选其中一种: 要么 更重要的是,假设我们只有3个属性,这可能不会有什么不同,但是您将在什么时候从 切换到 ? 问题答案: 版本1是更可取的,因为它更短,并且编译器实际上会将其转换为版本2-无任何性能差异。 更重要的是,鉴于我们只有3个属性,这可能没有什么区别,但是您什么时候从切换到? 在您要串联的地方-通常是编译器无法自行替换时。

  • 这篇文章主要介绍了String、StringBuffer、StringBuilder的区别详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下。放假在家里休息,闲来无事,想巩固巩固自己的基础知识。 Java中提供了两个类String和StringBuffer,它们用于储存和操作字符串