首先明确一下两种String的声明

String a = "ab"; 这种赋值都是直接在字符串常量池生成一个字符串对象的。

String a = new String("ab")在用new生成字符串对象的时候,只会在中生成字符串对象。而不会在字符串常量池生成对象,也没有引用。

intern在JDK中的不同:

  • 1、在jdk1.6中,intern()方法是先查找字符串常量池是否含有当前字符串,如果没有,那么就在字符串常量池中创建 该字符串,并且返回该字符串在字符串常量池中的引用。
  • 2、在jdk1.7中,intern()方法也是先查找字符串常量池中是否含有当前字符串,如果没有,将该字符串在堆的引用存在常量池中。并且返回该字符串在堆中的引用。

下面看几个例子:

 String A = "ab";String a = "a";String b = "b";String ab = a+b;/*** False ab是变量a+变量b,是一个新的引用*/System.out.println(ab==A);/*** False ab是变量a+变量b,是一个新的引用,和A.intern不相等*/System.out.println(ab==A.intern());/*** True ab.intern指向堆中的引用 和 A指向相同*/System.out.println(ab.intern()==A);/*** False 这里注意==不是优先运算的 这里的判断是  "ab.intern()==A"+ab.intern()   和  A == 的结果*/System.out.println("ab.intern()==A"+ab.intern()==A);

关于intern方法的理解相关推荐

  1. 一道十分经典的intern面试题(String字符串)让你彻底搞懂intern方法

    首先我觉得要看懂这道题还得知道inren()方法的一些知识,还要知道new String("ab")到底创建了几个对象. 一.intern()方法的理解(重难点) 1.intern ...

  2. String中intern()方法

    本文参考 https://blog.csdn.net/believesoul/article/details/79588305 ,我对这篇文章进行了一些小小的整理和修改.这篇文章很好的对intern( ...

  3. 对String中intern()方法的认识

    最近在看字符串相关知识的时候,又看到了关于字符串创建方式和是否相等的相关问题,回忆起之前碰到的一个String中的intern()方法,它是一个本地方法(由Java语言外的语言编写),因此在jdk1. ...

  4. 理解Java字符串常量池与intern()方法

    理解Java字符串常量池与intern()方法 阅读目录 Java内存区域 两种创建方式在内存中的区别 解释开头的例子 intern()方法 参考资料 String s1 = "Hello& ...

  5. Java--深入理解字符串的String#intern()方法奥妙之处

    学习背景 进入正文学习字符串的intern()方法之前,先给下这4个问题,看下自己是否都知道答案? 1.String s1 = "a" + "b"; //创建了 ...

  6. string.intern()方法理解

    String.intern()方法介绍 字符串常量池 在jdk7中,字符串常量池和静态变量都存储在堆中. 直接使用双引号声明出来的String对象会直接存储在常量池中. 如果不是用双引号声明的Stri ...

  7. String类中的intern()方法详解

    来源地址:https://blog.csdn.net/soonfly/article/details/70147205 在翻<深入理解Java虚拟机>的书时,又看到了2-7的 String ...

  8. java 创建string对象机制 字符串缓冲池 字符串拼接机制 字符串中intern()方法...

    字符串常量池:字符串常量池在方法区中 为了优化空间,为了减少在JVM中创建的字符串的数量,字符串类维护了一个字符串池,每当代码创建字符串常量时,JVM会首先检查字符串常量池.如果字符串已经存在池中,就 ...

  9. Java技术——你真的了解String类的intern()方法吗

    0.引言 什么都先不说,先看下面这个引入的例子: [java] view plain copy String str1 = new String("SEU")+ new Strin ...

最新文章

  1. chrome动态ip python_简单python代码实现模拟浏览器操作
  2. css实现图片动画效果
  3. 在git中出现中文乱码的解决方案
  4. OO第四单元博客作业
  5. 回归素材(part1)--实用机器学习
  6. LeetCode(283)——移动零(JavaScript)
  7. win7开放80端口
  8. OpenCV-数组加权和cv::addWeighted
  9. 加密对冲基金究竟靠谱吗?全球第一份行业报告揭开秘密
  10. Linux系统与服务构建(一)
  11. 无线通信里的 UAV
  12. 用scratch实现网上“超人训练”游戏
  13. 金融工程学(六):互换的定价与风险分析
  14. LRU算法模拟器(基于Java和VUE前端实现)
  15. 2021年总结 2022年展望
  16. 就这样吧,从此山水不相逢
  17. CAPS发布了完全支持OpenACC的编译器了!
  18. 文献 | 你的狗狗是否也很擅长“察言观色”?
  19. H2/H∞半车悬架控制仿真分析
  20. 单调函数的不连续点可数——泛函分析观点

热门文章

  1. python 爬虫day05
  2. 应用宝认领应用签名_腾讯应用宝认领应用步骤(详细)
  3. 3.Mapper.xml 详解
  4. 数据结构中存储和存取的区别
  5. HTML期末大作业 ~ 马尔代夫旅游网页设计作业成品 ~ HTML+CSS+JS网页设计期末课程大作业 ~ web前端开发技术 ~ web课程设计网页规划与设计...
  6. GD32E103/F303系列替换STM32F103
  7. transition过渡
  8. 93年的测试人,什么也不会敢要12K!思绪万千..
  9. 情人节撸一个表白页面
  10. 流氓软件终结者:Windows Defender