博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中intern().
阅读量:7041 次
发布时间:2019-06-28

本文共 618 字,大约阅读时间需要 2 分钟。

使用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/archive/2012/10/16/3576632.html

你可能感兴趣的文章
100723H Obfuscation
查看>>
matplotlib numpy scipy 的安装
查看>>
redux在react中的使用
查看>>
洛谷 P1203 [USACO1.1]坏掉的项链Broken Necklace
查看>>
Angular进阶教程二
查看>>
prism wp7 applicationbar 不能立即触发textbox 的双向绑定
查看>>
repo sync error: .repo/manifests/: contains uncommitted changes
查看>>
cmd 操作命令
查看>>
java.lang.NoSuchMethodError
查看>>
糗事⊙︿⊙
查看>>
AES加密解密 助手类 CBC加密模式
查看>>
网络ip
查看>>
JAVA连接SAP
查看>>
FZU2169 shadow题解
查看>>
教你正确打开async/await关键字的使用
查看>>
python 字符串复制
查看>>
【SignalR学习系列】2. 第一个SignalR程序
查看>>
js window.onload 的一个验证
查看>>
Lesson 1#08 格式化输出
查看>>
Nand Flash与Nor Flash
查看>>