String.intern()方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014491519/article/details/81322126

使用String.intern()方法可以保证相同内容的字符串引用相同类型的内存对象。

先来两个例子

String s1 = new String("aaa");
String s2 = new String("aaa");
System.out.println(s1 == s2);           // false
String s3 = s1.intern();
System.out.println(s1.intern() == s3);  // true

这里s1.intern()会将 s1放入常量池(String Pool)中,然后返回这个对象的引用。
如果采用”aaa”使用双引号创建字符串实例,会先在字符串常量池里面找,如果找到就返回对象引用,没有找到,新建对象并将对象引用放入常量池。

String s4 = "bbb";
String s5 = "bbb";
System.out.println(s4 == s5);  // true

在 Java 7 之前,字符串常量池被放在运行时常量池中,它属于永久代。而在 Java 7,字符串常量池被放在堆中。这是因为永久代的空间有限,在大量使用字符串的场景下会导致 OutOfMemoryError 错误。

猜你喜欢

转载自blog.csdn.net/u014491519/article/details/81322126