Java中字符串字面量是否自动生成一个String对象?

    xiaoxiao2025-12-30  9

    在开发过程中,经常会需要直接写出一个字符串变量,也就是双引号包括的字符数据,这样一种字面量写法的字符串,是否已经创建了一个String对象呢?如果没有,那么数据存放在哪里呢?如果有,并没有new语句啊,是怎么创建的呢?

    看下面代码:

    String str1=abc;//创建abc字符串对象

    String atr2=new String("abc");//new语句,创建abc字符串对象

       以上代码中,用俩种方式创建了字符串变量str1str2,它们有什么区别呢?其实,Java虚拟机(JVM)在执行这段代码的时候,遇到双引号操作符,它会自动创建一个String对象。该String对象所代表的就是abc,然后再返回该对象的一个引用。

       对于str1字符串来说,它的创建过程同上所说。在创建该对象之前,JVM会在String对象池中去搜索该字符对象是否已经被创建,如果已经被创建,则直接返回一个引用,否则先创建在返回引用。

       而str2字符串变量,它的创建过程就要多一个步骤。除了类似于str1字符串对象创建过程以外,它还会额外的创建一个新的String对象,也就是new关键字的作用,并且返回一个引用给str2.

      尽管str1str2的值是相同的,但是他们的引用是不同的,也就是说一下代码的返回值为false

    str1=str2;//结果为false

    转载请注明原文地址: https://ju.6miu.com/read-1305485.html
    最新回复(0)