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

什么时候(不是)两个内容相同的字符串共享相同的内存?

卢承弼
2023-03-14
问题内容

拥有Java代码

String s1="Java";

该字符串将分配在相同的内存位置(或多倍):

  • 是否多次启动同一程序(并行)执行?

可能的答案:

我目前是C#开发人员(尽管在上个千年中使用Java编程)。

我之所以问这个问题,是因为我相信.NET
CLR和Java(JVM)之间是相同的,我希望得到.NET应用程序的答案(但由于经常遇到的“应用程序”池术语而引起疑问)。

答案是 字符串 实习生池由同一JVM或.NET CLR的所有实例/程序共享。


问题答案:

@ gennady-vanin-novosibirsk ....

字符串s1 =“ Java”;字符串s2 =“ Java”;字符串s3 =“ Java”;字符串s4 =“ Java”;

  1. 以上在 StringConstantPool 位置中可用的所有对象都是指仅一个(“ Java”)位置的所有对象


 类似资料:
  • 下面的代码安全吗?编写类似这样的代码可能很有诱惑力: 该映射仅用于字符串文本。 我认为这是完全合法的,似乎正在起作用,但是我从未见过保证在两个不同地方使用的文字指针是相同的。我无法设法让编译器为具有相同内容的文本生成两个单独的指针,所以我开始怀疑这个假设有多坚定。 我只关心相同内容的文字是否可以有不同的指针。或者更正式地说,上面的代码可以除外吗? 我知道有一种方法可以编写代码来确保它有效,我认为上

  • 问题内容: 我有两个字符串,它们看起来都一样: 但是,检查相等性表明它们不是。 我还尝试从命令提示符中复制两个字符串,并将它们作为新变量粘贴回去,但是它们仍然不相等。我有80%的把握是因为它们的编码方式很怪异,插入了一些我看不见的奇数字符,但是使用type()都只是显示为字符串。 有什么办法可以看到“真实”字符串?任何帮助表示赞赏。 问题答案: 他们是不一样的; using显示了这两个值之间的差异

  • 为什么下面的和对象不同,当尝试在字符串池中创建时,它检查内容已经有相同的内容,所以引用字符串池中的对象。但我的假设是错误的,那么任何人都会纠正我。

  • 我一直在试图解决这个面试问题,它要求洗牌字符串,以便没有两个相邻的字母是相同的,例如, ABCC->ACBC 我想到的方法是 1)遍历输入字符串并将(字母、频率)对存储在某个集合中 2)现在通过拉取频率最高(即>0)的字母来构建一个结果字符串 3)每当我们拉一封信时,更新(减少)频率 4)如果所有字母的频率为零,则返回结果字符串 5)如果只剩下一个频率大于1的字母,则返回错误 我假设是Unicod

  • "给定两个字符串s和t,编写一个函数来检查s是否包含t的所有字符(顺序与字符串t相同)。返回true或false。递归不一定。这是我用java写的代码片段。问题是输入: string1="st3h5irteuyarh!"和string2="shrey"它应该返回TRUE,但它返回FALSE。那是为什么?"