7.4 两种实例化方式比较
- 本节课,视频讲的有点抽象。具体内容结合看书来理解看看???????
demo
public class HelloWorld {
public static void main(String[] args){
String strA = "mldn";
String strB = new String("mldn").intern();
System.out.println(strA == strB);// true
}
}
在Java中,String类的intern()方法是一个比较特殊的方法,它可以将当前字符串对象(也就是 this)放入到常量池中,并返回常量池中该字符串的引用。
如果常量池中已经存在该字符串,则直接返回该字符串的引用。
具体来说,String类中的intern()方法会首先检查常量池中是否存在与调用者equals相等的字符串,如果存在,则直接返回常量池中这个字符串的引用;
如果不存在,则将该字符串对象添加到常量池中,并返回常量池中这个字符串的引用。
在实际开发中,使用intern()方法可以提高字符串的存储效率和比较效率。因为在Java中,由于字符串常量池的存在,相同的字符串只需要在内存中存储一份,可以节省内存空间;
而使用intern()方法将字符串存储到常量池中,可以减少字符串的创建,提高字符串比较效率。
需要注意的是,在JDK6及以下版本中,字符串常量池位于永久代,较小且易于溢出,因此在大量使用字符串的场景下,可能会导致OOM(Out Of Memory)异常。
而在JDK7及以上版本中,字符串常量池被移到了堆中,因此不再容易出现OOM问题,但是也需要注意不要滥用intern()方法,否则可能会产生其他问题。
相信坚持的力量,日复一日的习惯.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)