1、先在IDEA中看看String定义的源码:
2、string 类是 java 语言的核心, 而且被广泛使用, 因此, 尽管它只是 java 库中的一个已定义类, 但 jvm 和编译器在某些情况下以特殊的方式处理字符串。 字符串几乎可以被视为基元类型。
3、创建 string 文本时, 没有必要, 甚至不建议调用 new。在编译时, 字符串文本 (即一对引号之间的任何字符) 将创建为字符串。
4、如下清单中创建的两个字符串是相同的, 在任何正在运行的程序中都可以被视为相同的值。首先查看 hellostring2 的构造, 当编译器看到字符序列 ", h, e,...,!," 时, 它知道这是为了创建引号中包含的值的 string 文本。
5、当 hellostring1 在引号中看到字符时, 它还为该值创建一个 string 对象。此字符串文本包含在构造函数中, 因此它瓴烊椹舟将传递给构造函数执行的任何操作。正如您将看到的, 字符串是不可变的, 因此此构造函数可以获取传递的值的副本。但是字符串 (char []) 构造函数将创建该数组的完整副本。大多数 ide 在尝试将 string 文本传递给 string 构造函数时都会生成警告, 这是不必要的。