在这里,我们讨论了两种在Java中创建字符串对象的方法,
通过使用字符串文字
通过使用新的关键字
现在,我们将借助示例详细讨论上面给出的每种方法。
字符串文字是正确的字符序列。
String Literal用字符源集的双引号引起来。
当我们要表示一个适当的字符序列时,应该使用String Literal。
每个String Literal必须以“ \ n”(空)字符结尾。
通过使用双引号(“”)在Java中创建字符串Literal。
示例
String str = "Java Programming";
注意:
每当我们创建字符串文字时,Java虚拟机(JVM)都会首先检查“字符串常量池”,因此有两种情况:
如果池中已经存在String Literal,则在这种情况下,将返回对池实例的引用(即,不为现有的String Literal创建新实例)。
否则,池中不存在String Literal,那么在这种情况下,将创建一个新的字符串实例并将其放置在池中(即为新的String Literal创建新实例)。
字符串对象存储在称为“字符串常量池”的特殊存储区中。
示例
//Java程序演示的例子 //通过使用字符串文字创建字符串对象。 public class CreateStringObjectByStringLiteral { public static void main(String[] args) { //创建一个字符串文字并放置在 //内存“字符串常量池”"string constant pool" String str1 = "Java Support OOPS Concepts"; System.out.println(str1); //同样,我们创建相同的文字(“ Java Support OOPS-"Java Support OOPS //概念”),那么在这种情况下,不会创建新实例") then in that case a new instance is not created //因为JVM首先先检查“字符串常量池”"string constant pool" first before //创建一个对象(如果存在),然后返回相同的对象 String str2 = "Java Support OOPS Concepts"; System.out.println("Return the same already placed in SCP :" + " " + str2); } }
输出结果
Java Support OOPS Concepts Return the same already placed in SCP : Java Support OOPS Concepts
在这里,我们将通过使用“ new”关键字以及如何在“ new”关键字的帮助下创建字符串对象来看到第二类。
这与使用“ new”关键字创建其他对象类似。
示例
String str = new String("Java Programming");
在上面的示例中,创建了两个对象以及一个引用(即,一个对象用于“字符串常量池”,另一个对象用于“堆”)。
注意:
每当我们使用“ new”关键字创建String对象时,Java虚拟机(JVM)都会在“堆内存”中创建一个新的字符串对象,并且文字“ Java Programming”将放置在“ String Constant Pool”中,而变量“ str”将引用放置在“堆内存”中的字符串对象。
当我们使用“ new”关键字创建字符串对象时,这些对象将存储在称为“ Heap”的特殊存储区域中。
示例
//Java程序演示的例子 //使用“ new”关键字创建字符串对象。"new" keyword. public class CreateStringObjectByNewKeyword { public static void main(String[] args) { //创建一个字符串对象并放置在 //内存“字符串常量池”"Heap" String str = new String("Hello, Java"); //在上述情况下,创建了两个新实例 //[一个用于SCP,另一个用于堆]以及 //一个参考 System.out.println(str); } }
输出结果
Hello, Java