intern()

intern方法的作用是:如果字符串常量池中已经包含一个字符串等于此String对象的字符串,则返回常量池中的这个String对应的对象,

否则将其添加到常量池并返回常量池中的引用。

在jdk1.7以后,就不会像之前那样把String对象复制到常量池,而仅仅复制堆中String对象的引用至常量池。

public class RuntimeConstantPool {public static void main(String[] args) {//放在了堆中String tr1=new StringBuilder("常量").append("池").toString();//将"常量池"这个字符串的引用放入常量池String tr2=tr1.intern();System.out.println(tr2==tr1);String st=new StringBuffer("jav").append("a").toString();//"java"这个字符串已经存在在常量池里String st2=st.intern();System.out.println(st2==st);}
}

故这段代码在1.7+版本运行为true,false,在1.6-则为 false,false。

常量池的位置

JAK1.6在方法区
JAK1.7放在堆里面
JAK1.8以后放在一个独立空间里面,叫做“元空间”

转载于:https://www.cnblogs.com/lshao/p/9689586.html

intern()方法的使用相关推荐

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

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

  2. Java中intern()方法的作用

    一般我们变成很少使用到 intern这个方法,今天我就来解释一下这个方法是干什么的,做什么用的 首先请大家看一个例子: [java] view plaincopyprint? public stati ...

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

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

  4. java intern_java String的intern方法

    我们知道再jvm的运行时内存可以分为堆.方法区.程序计数器.虚拟机栈和本地方法栈.而在方法区中有一个字符串常量池,用来保存字符串这个不可变量.如果我们使用String str=new String(& ...

  5. 关于Java中String类的intern()方法

    首先intern()方法的定义:当调用这个方法的时候,如果字符串常量池中有这个对象,就把常量池中的这个对象返回,没有就把当前对象加入到常量池并且返回当前对象的引用: jdk1.6之前:将对象存入常量池 ...

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

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

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

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

  8. JAVA中String类的intern()方法的作用

    2019独角兽企业重金招聘Python工程师标准>>> 一般我们变成很少使用到 intern这个方法,今天我就来解释一下这个方法是干什么的,做什么用的 首先请大家看一个例子: [ja ...

  9. 字符斜杠是合法常量吗_【面试秘籍】你对String的intern方法了解吗

    我们先来看个例子: public class StringTest { public static void main(String[] args) { String a = "A" ...

最新文章

  1. rapidxml修改节点的值
  2. Git 基本工作流程
  3. Effective Java读书笔记四:通用程序设计
  4. [C#] 连接数据库并验证用户名和密码
  5. python中那纠结的os.system()与空格处理
  6. 16 MM配置-BP业务伙伴-定义屏幕格式的账户组(供应商)
  7. Skywalking-12:Skywalking SPI机制
  8. 从武汉模式走向中国模式,打造人工智能产业发展的“中国样板”
  9. ASCII 控制符意义说明
  10. 条形码类型及其字符集和长度的说明
  11. MFC与stdafx
  12. 手机邮箱如何申请注册?163邮箱申请哪个好?
  13. 求一元二次方程的解法c语言,有什么方法求一元二次方程求解決一元二次方程的解法要详细...
  14. systemd.timer定时任务
  15. 1079: PIPI的存钱罐
  16. git - 1.基础
  17. 1021. Couples
  18. 圆周率怎么计算来的?教你利用欧拉恒等式,生成圆周率万能公式!
  19. 数据分析基础学习_Matplotlib_常见图形及绘制(折线图/散点图/柱状图/直方图/饼图)
  20. 一步一步玩转树莓派~

热门文章

  1. vue-cli 3.0集成sass/scss到vue项目
  2. TortoiseSVN2IDE.pas源代码
  3. 回文_Manacher算法
  4. ccf_201712-2
  5. Python学习——02-Python基础——【9-面向对象进阶】——isinstance(obj,cls)、反射等...
  6. 国家语言,语言代码,locale id对应表
  7. (原创)c#学习笔记06--函数02--变量的作用域01--其他结构中变量的作用域
  8. IOS6 新特性之UIRefreshControl
  9. java设计模式在项目中的使用_SpringMVC项目里,有必要使用一些设计模式吗?
  10. Missing binding node_modules/node-sass/vendor/darwin-x64-72/binding.node