String的intern函数

String.intern() 是一个 Native 方法,它的作用是:如果运行时常量池中已经包含一个等于此 String 对象内容的字符串,则返回常量池中该字符串的引用;如果没有,JDK1.7之前(不包含1.7)的处理方式是在常量池中创建与此 String 内容相同的字符串,并返回常量池中创建的字符串的引用,JDK1.7以及之后的处理方式是在常量池中记录此字符串的引用,并返回该引用。

“abc”是在字符串常量池中,所以intern函数返回的也是在字符串常量池的引用,比较之后返回true

 下面再来看一下这种情况:

new String("abc")这个操作会在堆实例化一个对象,并且如果“abc”不存在常量池的话,也会在常量池添加一份,s1.intern()函数返回的是常量池的引用,那么执行s1 ==  s2时必然返回false

 

iSoJust
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深入谈谈String.intern()在JVM的实现
seaboat——a free boat on the sea.(公众号:远洋号)
04-09 1525
前言 String 类的intern方法可能大家比较少用也比较陌生,虽然实际项目中并不太建议使用intern方法,可以在 Java 层来实现类似的池,但我们还是要知道它的原理机制不是。 关于intern方法 通过该方法可以返回一个字符串标准对象,JVM 有一个专门的字符串常量池来维护这些标准对象,常量池是一个哈希 map 结构,字符串对象调用intern方法会先检查池中是否已经存在该字...
String构造函数详解
panghaomingme的博客
03-25 3416
String字符串的构造方法有两种 第一种:通过“字面量”的形式直接赋值 String str = "hello"; 第二种:通过 new 关键字调用构造函数创建对象 String str = new String("hello"); JDK1.7以后的 JVM 的内存分布 常量池:Java运行时会维护一个String Pool(String池), 也叫“字符串缓冲区”。Str...
深入解析java中String类的intern方法
赶路人儿
10-21 618
在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。 8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用方法有两种: 直接使用双引号声明出来的String对象会直接存储在常量池中。 如果不是用双引号声明的String对象,可以使用String提供的intern方法。intern 方法会从字符串常量池中查询当前字符串是否存在,若不存在就
Stringintern方法的用处
热门推荐
hanrentanfei的专栏
10-09 2万+
今天第一次翻看Effective java,在其第一个item中讲静态工厂方法的有点的时候说到“它们每次被调用的时候,不要非得创建一个新的对象”并在结尾处提到---"String.intern方法以一种有限的形式实现了这种优化",由于以前没用过intern这个方法,所以去查了查,并把自己的理解写下来供以后参考首先来看其中文API的描述:internpublic String int
Stringintern()
ksy的博客
11-10 1508
String intern()函数
Java intern 函数
qq_34446716的博客
12-26 302
参照 意思就是 如果常量池中 没有就会创建然后指向的是常量池,如果有就指向堆(前提是本身就是堆对象) String a = new String(“1”) + “2”; 这种情况下a依旧是堆,此时堆中有"1"和“12”,常量池中有“1”,“2”,如果a.intern 那么返回的是常量池中的对象,因为常量池中没有"12"对象,要注意 String s = new String("1"); String s2 = "1"; s.intern();
StringIntern()方法,详解字符串常量池!
最新发布
qq_43842093的博客
03-05 2829
字符串拼接最好使用StringBuilder调用append来拼接。使用加号“+”拼接,会new一个StringBuilder,并且在最后调用toString方法时还会new String()。内存中由于创建了较多的StringBuilder和String对象,还有一方面是内存占用,调用GC还会额外花费时间。所以,字符串拼接直接使用StringBuilder会大大提高性能,尤其是多个字符串拼接。
String常量池的解析(包含intern函数)
weixin_43849906的博客
09-22 299
1.String类型的常量池比较特殊。它的主要使用方法有两种: 直接使用双引号声明出来的String对象会直接存储在常量池中。 如果不是用双引号声明的String对象,可以使用String提供的intern方法。intern 方法会从字符串常量池中查询当前字符串是否存在,若不存在就会将当前字符串放入常量池中 String s = "npu";//常量池中创建"npu"对象 String s1 = new String("npu");//此语句会创建两个对象 //1)堆中String对象 2)常量池中"
String类中的intern()方法
菩提小猿的博客
06-06 4102
1.前言         其实,促使我写这篇博客的原因说起来就挺可笑的。疫情在家,无所事事,就和室友对于专业方面的知识互相吹牛皮。然后,室友出了好几道题考我。也许结果早就在他的意料之中吧。其中,最让我不解的是这道题: String s1 = new String("a") + new String("bc"); s1.intern(); String s2 = "abc"; System.out.println(s1 == s2
深入理解JavaString#intern()内存模型Ja
11-22
`intern()`方法是一个非常特殊的函数,它将字符串常量池(String Constant Pool)的概念引入到我们的讨论中。 字符串常量池是Java虚拟机(JVM)内存模型的一部分,位于堆内存的常量池区域。在Java 6及之前,这个池...
java中的intern函数
qq_40708942的博客
10-24 915
intern函数
Java intern函数详解
weixin_44201525的博客
10-21 5691
String类具有很多构造函数,常用的有: ​ 1.直接赋值一个字符串 ​ 2.new String(String original) ​ 3.new String(char[] a) ​ 4.new String(char[] a,in,int) String创建机制: ​ 1.直接赋值时,先在常量池寻找是否有对应的字符串,若有,直接将引用变量指向常量池中字符串的地址;若无,则在常量池里面创建该字符串,再将其地址赋
Java中String.intern函数的用途
softmanfly的专栏
03-30 1403
First off, let's make sure that we all understand what java.lang.String.intern() actually does... Basically, it internalizes strings such that for any two strings, s1.intern() == s2.intern() if and
intern()详解
aaaayl的博客
08-12 2768
jdk1.7之后的intern()方法的作用: 1、若是字符串常量池中不存在这个字符串,那么,就创建一个引用,把该字符串实例对象的引用复制过来,并返回该地址。 2、若是字符串常量池中已存在该字符串,那么直接返回该字符串的地址。 下面举几个例子: 当使用intern()方法时,该字符串还未存在于常量池中。 public void internIsNotExistedTest() { String a = new String("a") + new String("b");
【一问一答】了解Java String intern()函数
u013643074的博客
08-29 377
这也是一篇有趣的问答。
Stringintern()函数|JVM运行时数据区
诗人不写诗
07-28 210
这里会涉及到几个概念,先提出来: 1、JVM规范认为Java虚拟机一般包含五个部分:堆、虚拟机栈、本地方法栈、程序计数器、方法区。运行时常量池是方法区的一部分。 2、HotSpot中对方法区的实现称为永久代,分清楚规范和实现之间的概念差异。 3、不同虚拟机版本实现有变化,Java7中存在永久代,但是永久代中运行时常量池已经迁出到堆中,Java8中已经没有永久代,新增Metaspace元空间,...
如何完美解答面试问题——一文搞懂Java中的intern()函数
GuYan的博客
11-07 2155
 大家好,我是孤焰。今天这篇文章仍然算在面试问题解答的系列中,但是要谈一道笔试难题——Java中intern()函数? 1.intern()函数是做什么的?  intern()函数intern()函数String对象的一个成员方法,调用intern()函数会返回该字符串在字符串常量池(StringTable)中的地址引用。 2.intern()详细介绍  intern()函数的功能:s.intern()调用时(s为String类型,例如String s = new String(“1”)),inte.
intern函数产生的疑问
特仑苏大碗茶
03-13 199
我之前说过: 在阅读周明耀老师的《深入理解JVM & G1 GC》该书时,对本书p31~33关于String的部分内容产生疑问,遂通过google等搜索引擎以及Stack Overflow和知乎(R大)[https://www.zhihu.com/people/rednaxelafx/answers?order_by=vote_num]的解答研究了一番,最终理解还是有欠缺。 这次系统地把这个“...
String.intern()方法详解
一颗奋起萌发的种子的博客
09-11 1751
String.intern() 方法是 Java 中的一个方法,它用于在字符串常量池(String Pool)中维护字符串对象的引用,以便可以有效地重用字符串,从而节省内存。
写文章

热门文章

  • @Resource注解用法 20372
  • 问题解决:Invalid bound statement (not found): com.yoe.mapper.UserMapper 17424
  • 智力题之【老鼠吃毒药问题】 4783
  • Java如何实现多继承? 2032
  • Junit单元测试默认自动回滚 656

最新评论

  • @Resource注解用法

    牛码2020: @Reource 没有指定name的值,所以容器会拿这个p1变量的名字去Bean池子中查找id为renlei的bean并装配到这个renlei变量中。装配成功 @Resource private Person renlei; ====应该是拿 renlei变量的名字去Bean池子中查找 吧?

  • @Resource注解用法

    没落的贵族ss: resource有name就byname,没有就bytype

  • @Resource注解用法

    Paranoid_z: 如果两个参数使用了是先byType还是先ByName呢

  • @Resource注解用法

    c+v精英: 简单清晰!表情包

  • Java如何实现多继承?

    苦恼のjava小宝: 学到了!表情包

大家在看

  • Vertx实现一个通用的MqttServer 231
  • 喷泉模型并不是常见的软件开发过程模型之一,它并不属于您提到的主流模型列表中 1216
  • CentOS-7学习-samba服务配置
  • 基于ssm+vue.js的新生入学报道系统附带文章源码部署视频讲解等 709
  • 消息机制是一种对象之间通信的机制,它允许不同的对象或组件在运行过程中相互传递信息而不直接调用彼此的方法

最新文章

  • @Resource注解用法
  • Junit单元测试默认自动回滚
  • Arrays.asList需要注意的点
2021年3篇
2020年12篇
2019年2篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玻璃钢景观雕塑的类型玻璃钢十八罗汉雕塑什么叫玻璃钢雕塑供应玻璃钢雪山雕塑河南室内商场美陈生产企业园林玻璃钢雕塑价格户外庭院玻璃钢雕塑造型腾冲市玻璃钢雕塑批发闵行区专业玻璃钢雕塑厂家报价如何选购玻璃钢雕塑舟山玻璃钢雕塑厂家陆丰玻璃钢景观雕塑玻璃钢五彩马雕塑青海省玻璃钢雕塑报价沧州玻璃钢人物雕塑厂家韶关玻璃钢景观雕塑款式多样鹰潭创意玻璃钢雕塑哪家便宜江西玻璃钢雕塑艺术品重庆商场美陈玻璃钢卡通雕塑舟山多彩玻璃钢雕塑市场沧州玻璃钢雕塑定制温州节日商场美陈郑州哪有卖玻璃钢花盆广场标识校园玻璃钢景观雕塑定做玻璃钢雕塑设计灵感重庆玻璃钢桃子雕塑十二生肖玻璃钢雕塑哪家好北京玻璃钢卡通雕塑厂玻璃钢灯球雕塑浙江玻璃钢人物雕塑定做香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化