Java 关于字符串中的intern()方法
Java 关于字符串中的intern()方法,java,string,Java,String,intern()方法检查特定对象是否存在于字符串常量池中。Oterwise将在字符串常量池中创建该对象。但是Stringintern()需要什么呢?哪种情况下它有用?它几乎从来没有用过。根据Stringclass文档,Stringliterals始终处于内部。也就是说,如果我说 String s1=new String("Raam"); String s2=s1.concat("Kumar"); String s3=s2.intern(); String s4="RaamKumar"; Syst
intern()
方法检查特定对象是否存在于字符串常量池中。Oterwise将在字符串常量池中创建该对象。但是Stringintern()
需要什么呢?哪种情况下它有用?它几乎从来没有用过。根据String
class文档,String
literals始终处于内部。也就是说,如果我说
String s1=new String("Raam");
String s2=s1.concat("Kumar");
String s3=s2.intern();
String s4="RaamKumar";
System.out.println("s3==s4..."+(s3==s4)); //true
,一个对象将放在堆上,a
和b
将指向同一引用
所以,我想说,这是一种语法糖,不需要调用
intern()
。你读过吗?如果您不执行s2.intern()
操作,会发生什么情况?它不是自动被拘留的吗?@FarhadAliNoo拘留只会自动对源代码中的字符串文本进行拘留。问题是当它有用时,而不是当它不有用时。
String a = "A String";
String b = "A String";