一、代码

public class StringIntern {public static void main(String[] args) {String s=new String("1");String s2="1";s.intern();//调用此方法之前,字符串常量池中已经存在了"1",但注意,这仅仅是调用,并没有接收返回值//如果使用变量接收,那么就接受到了字符串常量池中"1"的地址了String s5=s.intern();System.out.println(s == s2);//falseSystem.out.println(s5 == s2);//trueString s3=new String("1")+new String("1");//执行完上一行代码之后,字符串常量池中,是否存在11呢?答案是不存在,因为最终调用的是StringBuilder方法,并不是在常量池中生成"1"这个对象,而是直接返回一个String对象//执行这行代码后,常量池中就生成了"11"了,//在jdk6中,创建了一个新的对象"11",也就有了新的地址//在jdk1.7/1.8中,常量池中并没有创建"11",而是创建了一个指向堆空间的那个new出来的那个"11"的地址s3.intern();//到常量池中找String s4="11";System.out.println(s3==s4);//jdk1.6 false jdk1.7/1.8:true}
}

二、代码图解


三、intern方法总结

记住:jdk1.7之后,字符串常量池可以放String对象的引用地址

四、补充练习


关于String.Intern()的一道题相关推荐

  1. String.intern()方法JDK6与JDK7/JDK8不同

    在JDK6中,String.intern()方法先去运行时常量池中查看有无该字符串,如果有,则直接返回该字符串在方法区的内存地址.如果没有则会先将该字符串对象复制一份保存在常量池中,并返回该字符串对象 ...

  2. 深入解析String#intern

    为什么80%的码农都做不了架构师?>>>    引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String.这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了 ...

  3. 使用String.intern减少内存使用

    最近写一个程序,从文件中读取一些字/词,然后存储起来供别的类引用. 对每个读入的词创建一个String,结果许多同样内容的也会存储多份,会占用大量内存. 开始的一个想法是使用map/set来存储所有遇 ...

  4. 01.几张图轻松理解String.intern()

    当调用 intern() 方法时,编译器会将字符串添加到方法区的运行常量池中(stringTable维护),并返回指向该常量的引用. 在翻<深入理解Java虚拟机>的书时,又看到了2-7的 ...

  5. Java基础提升篇:理解String 及 String.intern() 在实际中的应用

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 好好学java java知识分享/学习资源免费分享 关注 精彩内容 你所需要的 ...

  6. Java提升篇:理解String 及 String.intern() 在实际中的应用

    String的深入解析 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些 ...

  7. JVM系列之:String.intern的性能

    文章目录 简介 String.intern和G1字符串去重的区别 String.intern的性能 举个例子 简介 String对象有个特殊的StringTable字符串常量池,为了减少Heap中生成 ...

  8. string会传null吗_JVM 解剖公园(10): String.intern()

    (给ImportNew加星标,提高Java技能) 编译:ImportNew/唐尤华 shipilev.net/jvm/anatomy-quarks/10-string-intern/ 1. 写在前面 ...

  9. string.intern_使用String.intern()减少内存使用

    string.intern 时不时地会有一个垂死的生产应用程序. 而且您知道您需要尽快对其进行修补. 我们也是如此,并认为分享最近的一个战争故事会很有趣. 在这种情况下,我们就有机会使用String. ...

最新文章

  1. 深度解析MegEngine亚线性显存优化技术
  2. 在Python函数内部赋值操作是新的变量而不是全局变量
  3. python调用cmd命令
  4. which和whereis
  5. 【Leetcode】Palindrome Number
  6. mysql left/right join算法效率分析_mysql left join,right join,inner join超详细用法分析
  7. 计算机移动设备有限公司,使计算机,移动设备更节能
  8. FreeBSD与Linux的比较
  9. Redis面试常问3 如何实现分布式锁 记住Redis的原子性
  10. 【实践】Angel深度学习在广告推荐训练优化中的实践.pdf(附下载链接)
  11. java读取csv文件_使用扫描仪读取Java中的CSV文件
  12. 自定义 Yasnippet 模板
  13. 求助大神!ROST EA情感分析软件情感词典如何更新
  14. python---字符串的拼接、去重、反转、字母花样排序、单词出现判断、统计文件特定单词频率lambda、硬盘容量、列表转字符串
  15. Android Stagefright MPEG4Extractor分析
  16. 爬虫学习之17:爬取拉勾网网招聘信息(异步加载+Cookie模拟登陆)
  17. [渝粤教育] 广东-国家-开放大学 21秋期末考试建筑工程计量与计价10517k1
  18. matlab之创建图像轮廓图函数imcontour
  19. 星星是怎么来的?—— CG短片《繁星》幕后分享
  20. 有限新息率FRI信号模型

热门文章

  1. 委托 匿名类 var隐式类型 匿名方法
  2. 新概念 Lesson 7 A new dress 定冠词、不定冠词
  3. linux下的ps命令
  4. gcc/g++/makefile/easymake/cmake/xmake/nmake ...
  5. 手机web——自适应网页设计(html/css控制) - 51CTO.COM
  6. 过滤选择器——子元素过滤选择器
  7. Android SQLite数据库的基本操作-SQLiteDatabase
  8. VS.Net 2005 Beta2连接Team Foundation Server的问题
  9. (转载)adb模拟按键事件KeyCode
  10. Linux下构建FTP服务器