当前位置: 首页 > 知识库问答 >
问题:

什么是java中的Intern()?[复制]

谯灿
2023-03-14
public static void main(String[] args)
{
    String literalstr = "ABC";
    String literalstr2 = "ABC";
    String str = new String("ABC");
    String str2 = new String("ABC"); 

if (literalstr == literalstr2)
{
     System.out.println("Literal String... I use String Pooling");
}
if (str != str2)
{
      System.out.println("Object String... I dont use String Pooling");
}
if (str.intern() == str2.intern())
{
     System.out.println("Interning ... I use String Pooling");
}
    // System.out.println(ric2);
}

实习生()的目的是什么?

共有1个答案

施海
2023-03-14

只要阅读Java文档,它就会告诉你:

返回字符串对象的规范表示形式。

最初为空的字符串池由类字符串私下维护。

调用intern方法时,如果池中已经包含一个由equals(Object)方法确定的等于此String对象的字符串,则返回池中的字符串。否则,将此String对象添加到池中并返回对此String对象的引用。

因此,对于任意两个字符串s和t,当且仅当s.equals(t)为真时,s.intern()==t.intern()为真。

所有文字字符串和字符串值常量表达式都被插入。Java语言规范§3.10.5中定义了字符串文字

 类似资料:
  • 以下构造的确切含义是什么:? 起初,我认为将表示对为类定义的静态类变量的访问,但如果确实如此,那么下面的赋值应该是可能的: 的真正含义是什么?它是静态类变量吗?它是Java特殊构造吗?

  • 问题内容: 我写Java已有一段时间了,今天我遇到了以下声明: 请注意数组声明中的“点点点”,而不是通常的括号[]。显然可以。实际上,我写了一个小测试并验证了它的有效性。因此,我提取了Java语法,以查看参数声明语法的位置,但未找到任何内容。 那么对那里的专家来说,这是如何工作的呢?它是语法的一部分吗?另外,虽然我可以像这样声明函数,但不能像这样在函数体内声明数组。 无论如何,您知道在哪里记录了此

  • 我很难理解<代码> 结果是15 但是怎么会变成15呢?

  • 请帮助我理解这个表达是什么意思?

  • 问题内容: 我一直在寻找什么样的答案,并且是在Java。我搜索并找到了其他类似的答案: System是java.lang包中提供的一个内置类。该类具有最终修饰符,这意味着它不能被其他类继承。它包含预定义的方法和字段,提供标准输入,输出等功能。 out是System类中的静态最终字段(即变量),类型为PrintStream(内置类,包含用于打印不同数据值的方法)。静态字段和方法必须使用类名进行访问,

  • 问题内容: 除了让编译器检查超类是否具有该方法之外,是否有任何其他理由来注释方法? 问题答案: 如您所描述的,@ Override创建一个编译时检查,以确保方法被覆盖。这对于确保尝试覆盖时不会出现愚蠢的签名问题非常有用。 例如,我看到以下错误: 此类按编写方式进行编译,但是将@Override标记添加到equals方法将导致编译错误,因为它不会覆盖Object上的equals方法。这是一个简单的错