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

赋值和创建字符串实例之间有什么区别?

胡桐
2023-03-14
问题内容

在面试中,面试官问我

以下语句之间的共同点和区别是什么:

String s = "Test";

String s = new String("Test");

内存分配有什么区别吗?


问题答案:
String s = "Test";

首先将在字符串常量池中查找字符串“
Test”。如果找到,将引用所找到的对象。如果未找到,则会创建一个新的String对象,并将其添加到池中,并使s引用新创建的对象。

String s = new String("Test");

首先将创建一个新的字符串对象,并使其引用它。此外, 如果 字符串“ Test” 尚不存在, 在字符串常量池中进行输入。

因此,假设字符串“ Test”不在池中,则第一个声明将创建一个对象,而第二个声明将创建两个对象。



 类似资料:
  • 问题内容: 在PHP中,将解析包含在“双引号”中的字符串以替换变量,而不会解析包含在“单引号”中的字符串。在Python中,这是否也适用? 问题答案: 否: 2.4.1。字符串和字节文字 …用简单的英语:两种类型的文字都可以用匹配的单引号()或双引号()括起来。它们也可以包含在三个单引号或双引号的匹配组中(通常称为三引号字符串)。反斜杠()字符用于转义具有特殊含义的字符,例如换行符,反斜杠本身或引

  • 问题内容: 我想通过事件参数发生按钮单击事件时分配一些值: 我已将值分配给 。 现在我看到angular.copy()。所以我用angular.copy编写了代码。 两者都在做同样的事情,所以有什么区别?请告诉我和之间的区别。 问题答案: 可以理解,这里 执行了参数的深层复制(参见“克隆”)-本质上是创建一个新对象-而使用赋值运算符只分配 引用 的。 因此,在后一种情况下,如果您要更改某些内容,您

  • 问题内容: 我正在使用一个返回字节字符串的库,我需要将其转换为字符串。 尽管我不确定有什么区别-如果有的话。 问题答案: 假设使用Python 3(在Python 2中,这种区别的定义不太明确)-字符串是字符序列,即unicode码点;这些是一个抽象概念,不能直接存储在磁盘上。毫无疑问,字节字符串是字节的序列- 可以 存储在磁盘上的东西。它们之间的映射是一种 编码 -其中有很多(并且无限可能)-并

  • 问题内容: 之间是否存在有意义的区别: 与 如果要创建很多实例,这两种样式在性能或空间要求上是否有任何区别?阅读代码时,您是否认为两种样式的含义有明显不同? 问题答案: 除了性能方面的考虑外,还有明显的语义差异。在类属性的情况下,仅引用一个对象。在实例属性设置实例中,可以有多个引用对象。例如

  • 问题内容: 在此示例中: 无法编译为: 而被编译器接受。 这个答案说明唯一的区别是,与不同,它允许您稍后引用类型,似乎并非如此。 是什么区别,并在这种情况下,为什么不第一编译? 问题答案: 通过使用以下签名定义方法: 并像这样调用它: 在jls§8.1.2中,我们发现(有趣的部分被我加粗了): 通用类声明定义了一组参数化类型(第4.5节), 每种可能通过类型arguments调用类型参数节的类型

  • 问题内容: 空字符串()和空字符串()有什么区别? 这就是我所拥有的: 这是什么意思? 问题答案: 表示将空值分配给。在这种情况下,与相同,将按预期产生。 表示将()或“完全没有值”分配给。因此,这与相同,它将产生一个,因为您无法在Java中对变量(指针或类似物)调用方法。 还有一点,声明 实际上具有与以下功能相同的效果: 鉴于 如前所述,是另一回事。