intern()方法的使用
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()方法的使用相关推荐
- String.intern()方法JDK6与JDK7/JDK8不同
在JDK6中,String.intern()方法先去运行时常量池中查看有无该字符串,如果有,则直接返回该字符串在方法区的内存地址.如果没有则会先将该字符串对象复制一份保存在常量池中,并返回该字符串对象 ...
- Java中intern()方法的作用
一般我们变成很少使用到 intern这个方法,今天我就来解释一下这个方法是干什么的,做什么用的 首先请大家看一个例子: [java] view plaincopyprint? public stati ...
- 理解Java字符串常量池与intern()方法
理解Java字符串常量池与intern()方法 阅读目录 Java内存区域 两种创建方式在内存中的区别 解释开头的例子 intern()方法 参考资料 String s1 = "Hello& ...
- java intern_java String的intern方法
我们知道再jvm的运行时内存可以分为堆.方法区.程序计数器.虚拟机栈和本地方法栈.而在方法区中有一个字符串常量池,用来保存字符串这个不可变量.如果我们使用String str=new String(& ...
- 关于Java中String类的intern()方法
首先intern()方法的定义:当调用这个方法的时候,如果字符串常量池中有这个对象,就把常量池中的这个对象返回,没有就把当前对象加入到常量池并且返回当前对象的引用: jdk1.6之前:将对象存入常量池 ...
- String类中的intern()方法详解
来源地址:https://blog.csdn.net/soonfly/article/details/70147205 在翻<深入理解Java虚拟机>的书时,又看到了2-7的 String ...
- java 创建string对象机制 字符串缓冲池 字符串拼接机制 字符串中intern()方法...
字符串常量池:字符串常量池在方法区中 为了优化空间,为了减少在JVM中创建的字符串的数量,字符串类维护了一个字符串池,每当代码创建字符串常量时,JVM会首先检查字符串常量池.如果字符串已经存在池中,就 ...
- JAVA中String类的intern()方法的作用
2019独角兽企业重金招聘Python工程师标准>>> 一般我们变成很少使用到 intern这个方法,今天我就来解释一下这个方法是干什么的,做什么用的 首先请大家看一个例子: [ja ...
- 字符斜杠是合法常量吗_【面试秘籍】你对String的intern方法了解吗
我们先来看个例子: public class StringTest { public static void main(String[] args) { String a = "A" ...
最新文章
- rapidxml修改节点的值
- Git 基本工作流程
- Effective Java读书笔记四:通用程序设计
- [C#] 连接数据库并验证用户名和密码
- python中那纠结的os.system()与空格处理
- 16 MM配置-BP业务伙伴-定义屏幕格式的账户组(供应商)
- Skywalking-12:Skywalking SPI机制
- 从武汉模式走向中国模式,打造人工智能产业发展的“中国样板”
- ASCII 控制符意义说明
- 条形码类型及其字符集和长度的说明
- MFC与stdafx
- 手机邮箱如何申请注册?163邮箱申请哪个好?
- 求一元二次方程的解法c语言,有什么方法求一元二次方程求解決一元二次方程的解法要详细...
- systemd.timer定时任务
- 1079: PIPI的存钱罐
- git - 1.基础
- 1021. Couples
- 圆周率怎么计算来的?教你利用欧拉恒等式,生成圆周率万能公式!
- 数据分析基础学习_Matplotlib_常见图形及绘制(折线图/散点图/柱状图/直方图/饼图)
- 一步一步玩转树莓派~
热门文章
- vue-cli 3.0集成sass/scss到vue项目
- TortoiseSVN2IDE.pas源代码
- 回文_Manacher算法
- ccf_201712-2
- Python学习——02-Python基础——【9-面向对象进阶】——isinstance(obj,cls)、反射等...
- 国家语言,语言代码,locale id对应表
- (原创)c#学习笔记06--函数02--变量的作用域01--其他结构中变量的作用域
- IOS6 新特性之UIRefreshControl
- java设计模式在项目中的使用_SpringMVC项目里,有必要使用一些设计模式吗?
- Missing binding node_modules/node-sass/vendor/darwin-x64-72/binding.node