Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么使用字符串实习生方法?_Java - Fatal编程技术网

Java 为什么使用字符串实习生方法?

Java 为什么使用字符串实习生方法?,java,Java,正如本文中所解释的,字符串文本是自动合并的,但对于使用neware构造的对象,则不是这样,因此使用intern方法。但是,即使我们使用intern方法,也会创建一个新对象,那么intern方法有什么用呢 String s = "Example"; String s1 = new String("Example"); // will create new object String s2 = new String("Example").intern(); // this will create

正如本文中所解释的,字符串文本是自动合并的,但对于使用neware构造的对象,则不是这样,因此使用intern方法。但是,即使我们使用intern方法,也会创建一个新对象,那么intern方法有什么用呢

String s = "Example";

String s1 = new String("Example"); // will create new object

String s2 = new String("Example").intern(); // this will create new object
 // but as we are calling intern we will get reference of pooled string "Example"
现在

那么实习生的方法有什么用呢

String s = "Example";

String s1 = new String("Example"); // will create new object

String s2 = new String("Example").intern(); // this will create new object
 // but as we are calling intern we will get reference of pooled string "Example"
编辑

我理解intern方法的工作原理,但我的问题是为什么会有intern方法?因为要调用intern方法,我们必须使用new创建string对象,这将创建string的新实例

String s3 = new String("Example"); // again new object

String s4 = s3.intern();

System.out.println(s3 == s4); // will return false
所以调用intern方法不会将s3指向池字符串。intern方法将返回对池字符串的引用


另外如果字符串尚未被池化,呼叫实习生会将其推入池中吗?那么,这是否意味着每次我调用intern时,任何字符串都将被推送到池中?

以下是事件顺序:

String s=“示例”

在池中创建一个Sting文本

String s1=新字符串(“示例”)


//将创建新对象用于
.intern()
的基本算法如下:

  • 创建字符串的哈希集
  • 检查您正在处理的字符串是否已在集合中
  • 如果是,则返回集合中的一个
  • 否则,将此字符串添加到集合并返回它

  • 因此,它基本上用于查找池中存在的给定字符串,如果该字符串存在,则它将获得相同的实例,否则它将为新字符串创建新实例。

    此方法返回字符串对象的规范表示形式。因此,对于任意两个字符串a和t,
    s.intern()==t.intern()
    true
    当且仅当
    s.equal(t)
    true

    以下是您的语法:--


    坦率地说,这没有用。
    // will create new object <-- Correct, just create a new object
    
    public String intern ()