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

java文本字符串和new String()有什么区别?

祝高阳
2023-03-14
问题内容

以下两个语句之间有什么区别?

String s = "text";
String s = new String("text");

问题答案:

new String("text"); 显式创建对象的新的和参照不同的实例String;如果有String s = "text";一个实例,可以从字符串常量池中重用一个实例。

参照区别是什么意思

检查以下代码段:

String s1 = "foobar";
String s2 = "foobar";

System.out.println(s1 == s2);      // true

s2 = new String("foobar");
System.out.println(s1 == s2);      // false
System.out.println(s1.equals(s2)); // true

==在两种引用类型上的是引用标识比较。equals不一定是两个对象====在引用类型上使用通常是错误的;大多数时候equals需要使用它来代替。

但是,如果出于任何原因需要创建两个equals而不是==字符串,则可以使用new String(anotherString)构造函数。但是,需要再次说,这是非常特殊的,并且很少是故意的。

下面的快照可以帮助您直观地理解它,以便长时间记住它。

逐行创建对象:

String str1 = new String("java5");

在构造函数中使用字符串文字“java5”,新的字符串值存储在字符串常量池中。使用new运算符,将在堆中创建一个新字符串对象,并将其值设为“java5”。

String str2 = "java5"

引用“ str2”指向字符串常量池中已存储的值

String str3 = new String(str2);

在堆中创建一个新的字符串对象,其值与“str2”的引用相同

String str4 = "java5";

引用“str4”指向字符串常量池中已存储的值



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

  • 这是c primer中的代码: 从

  • 据我所知, 可变字符串可以更改,不可变字符串不能更改。 这里我想这样改变字符串的值, 另一种方法是, 在这两种情况下,我都试图改变str的值。谁能告诉我,这两种情况的区别是什么,让我清楚地了解可变和不可变对象。

  • 下面这两种说法有什么区别?

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

  • 问题内容: 和Go 之间有什么区别? 什么时候使用“他”或“她”? 为什么? 你好 输出是,而缺少,有时我觉得很奇怪。 问题答案: 并且是不同的类型,但是它们可以相互转换: 3。将一个字节的切片转换为字符串类型会产生一个字符串,其连续字节是该切片的元素。 4。将字符串类型的值转换为字节片的类型会产生一个片,其连续元素是字符串的字节。 博客:数组,切片(和字符串):’append’的机制: 字符串实