java中intern().

使用intern()方法可以有效加快JVM进行比较的速度.
因为,在字符串比较来说==比较的是两个引用变量的地址
而equals方法(在String类中被复写)比较的是两个变量的实际值
==直接比较两个引用变量的值就可以了
而equals方法需要根据两个引用变量的地址去堆内存中判断两个引用变量的值是否相等
所以==的速度比equals 方法的速度快很多

然而 intern()方法的出现 使这种现象更加明显
intern()方法在被调用的时候 会在常量池里判断引用变量指向的内容在常量池中是否存在
如果存在就让引用变量直接指向常量池中的内容而不会再在堆内存中开盘空间存储该引用
变量指向的内容
s4=(s1+s2).intern();//(s1+s2)的实际值为"abcabc"调用intern()方法 该方法在常量池中
寻找是否已有"abcabc"存在,因为前面 String s3="abcabc";常量池中已经存在该内容
所以就将s4直接指向该内容 故s3==s4为true

也就是说 intern()方法使得字符串引用变量的指向更加明确 用常量池来管理这些内容
这样就大大提高了==比较的速度。
所以在大批的字符串变量比较中 要用到intern()方法 它可以更高效快捷的进行字符串变量比较
原文地址:https://www.cnblogs.com/yangzhi/p/3576632.html