Java中 String s = new String(“java265.com”)创建了几个对象呢?(How many objects are created by string s = new string (“java265. Com”) in Java?)

下文笔者将围绕String这个特殊类阐述其创建对象的过程,如下所示:

  String s = new String("java265.com")
  以上代码运行的将会在字符串池中创建一个“java265.com”
  当我们运行new String时,将字符串池中的字符串复制到堆中,将堆的地址执行s
--------------------------------------------------------------------------------
 通过上面的分析,我们可以得知,以上的操作
 在jvm中最多产生两个对象(因为java265.com存在字符串池中时,只会创建一个对象) 
 

例:

package com.java265.other;
public class Test {
    public static void main(String[] args) throws Exception {
        String s1 = new String("java265.com");
        String s2 = new String("java265.com");
        if (s1 == s2) {
            System.out.println("堆中为相同一个对象");
        } else {
            System.out.println("堆中存在二个对象");
        }
    }
}
-------运行以上代码,将输出以下信息------
堆中存在二个对象

参考资料:

  http://java265.com/JavaMianJing/202111/16376993271824.html

————————

In the following, the author will describe the process of creating objects around the special class string, as follows:

  String s = new String("java265.com")
  以上代码运行的将会在字符串池中创建一个“java265.com”
  当我们运行new String时,将字符串池中的字符串复制到堆中,将堆的地址执行s
--------------------------------------------------------------------------------
 通过上面的分析,我们可以得知,以上的操作
 在jvm中最多产生两个对象(因为java265.com存在字符串池中时,只会创建一个对象) 
 

Example:

package com.java265.other;
public class Test {
    public static void main(String[] args) throws Exception {
        String s1 = new String("java265.com");
        String s2 = new String("java265.com");
        if (s1 == s2) {
            System.out.println("堆中为相同一个对象");
        } else {
            System.out.println("堆中存在二个对象");
        }
    }
}
-------运行以上代码,将输出以下信息------
堆中存在二个对象

reference material:

  http://java265.com/JavaMianJing/202111/16376993271824.html