需要注意的是,由于字符串常量池是位于堆内存中的一部分,所以使用intern方法会增加堆内存的使用量。 4. String#intern 方法的使用示例 Stringstr1=newString("hello");Stringstr2="hello";Stringstr3=str1.intern();System.out.println(str1==str2);// falseSystem.out.println(str2==str3);// true 上述...
最近阅读Nacos的源码,还真看到代码中使用String类的intern方法,NamingUtils类中有这样一个方法: publicstaticStringgetGroupedName(finalStringserviceName, finalStringgroupName) {// ...省略参数校验部分 final String resultGroupedName = groupName + Constants.SERVICE_INFO_SPLITER + serviceName; return resultGroupe...
底层调用C++的 StringTable::intern方法实现 1. 2. 3. 当通过语句str.intern()调用intern()方法后 JVM 就会在当前类的常量池中查找是否存在与str等值的String 若存在则直接返回常量池中相应Strnig的引用 若不存在,则会在常量池中创建一个等值的String 然后返回这个String在常量池中的引用 --- 因此,只要是等值...