String Literal vs String Object

时间:2016-10-22 04:42:53

标签: java

我读了很多关于String Literal vs String Object的内容。我读到String literal存储在String池中,String对象将在堆中创建一个对象。我在使用“”初始化的类的实例变量中很困惑。

class A {
    private String aStr = "ASTRING";
}

aStr添加到String池中还是会在堆中创建一个对象?

2 个答案:

答案 0 :(得分:2)

每当使用new关键字时,就会在堆中创建对象。 这里不使用new关键字,因此在字符串池中创建字符串对象 例如:

String s1= new String("string object");

在上面的示例中,正在创建两个对象,其中一个是string object字符串池,因为它是双引号,另一个是s1,它是在使用新关键字时在堆中创建的。

答案 1 :(得分:-1)

正如Gaur93所说的那样,但我想补充一点。 让我们举一个例子:

String s = "hello";
String s1 = new String("hello");

String对象基本上是字符串文字的包装器。汇集唯一的字符串对象以防止不必要的对象创建,并且JVM决定在内部汇集字符串文字。

当你使用文字时,比方说      String str =“hello” 使用池中的对象。如果使用 String str = new String(“hello”); ,则会创建一个新对象,但现有的字符串文字可以在JVM级别或字节码上重用级别(在编译时)。

您可以使用java的.equals()方法来检查。