在jdk1.6与jdk1.7中,String类中的intern()方法实现的原理是有一些差异的。
1、在jdk1.6中,intern()方法是先查找字符串常量池是否含有当前字符串,如果没有,那么就在字符串常量池中创建 该字符串,并且返回该字符串在字符串常量池中的引用
2、在jdk1.7中,intern()方法也是先查找字符串常量池中是否含有当前字符串,如果没有,那么就在堆中创建改字符串,并且返回该字符串在堆中的引用

这一改动会影响到相关比较的结果,一下是代码的实例

String s = new String("Hap")+ new String("py");
System.out.println(s.intern() == s);

在jdk1.6版本中,该结果为false,因为s在堆中,s.intern()在字符串常量池中
在jdk1.7版本中,该结果为true,因为s和s.intern()都在堆中,并且都指向同一个字符串。

最新文章

  1. xargs的原理剖析及用法详解
  2. Jenkins学习二:Jenkins安装与配置
  3. HDFS & MapReduce异构存储性能测试白皮书
  4. linux定时执行任务
  5. MFC学习之窗口基础
  6. C++ primer 练习9.49
  7. oracle12 pl/sql
  8. ExtJS中动态设置TextField的readOnly属性
  9. shell 求总分
  10. Nagios设置只监控不报警
  11. 解决GitHub未配置SSH key提示错误信息
  12. mina教程
  13. linux命令——iotop
  14. ElasticSearch 使用问题
  15. Android Studio向项目添加C/C++原生代码教程
  16. ArcGIS Desktop水文计算
  17. BAT面试的准备—iOS篇
  18. 如何更新world文档的目录
  19. Log4j(3)--rootLogger根配置和appender输出类型配置
  20. Project Tango Explorer

热门文章

  1. C++基础知识篇:C++ 存储类
  2. 集群--lvs
  3. JVM 堆中对象分配、布局和访问
  4. 【DKNN】Distilling the Knowledge in a Neural Network 第一次提出神经网络的知识蒸馏概念
  5. DBeaver连接达梦|虚谷|人大金仓等国产数据库
  6. 基于CefSharp开发(四)浏览器文件下载
  7. RabbitMQ,想说爱你不容易(附详细安装教程)
  8. 九. Vuex详解
  9. 第1章 Python学习环境构建目录
  10. HTML基础之标签