Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 关于字符串中的intern()方法_Java_String - Fatal编程技术网

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将在字符串常量池中创建该对象。但是String
intern()
需要什么呢?哪种情况下它有用?

它几乎从来没有用过。根据
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";