String s1=new string ("abc") 会在堆中创建一个对象,在常量池创建一个对象"abc"
String s2=new string ("abc")+ new string ("abc")会在堆中创建一个对象,调用intern()会在常量池创建一个引用指向堆中。
为什么在s1 new 的时候 不是在常量池创建一个引用而是创建一个"abc"?
2条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
CSDN专家-深度学习进阶 2021-09-28 19:18最佳回答 专家已采纳采纳该答案 已采纳该答案 专家已采纳评论解决 无用打赏举报微信扫一扫
分享评论登录 后可回复...
查看更多回答(1条)
报告相同问题?
提交
相关推荐 更多相似问题
- 2021-09-28 19:16回答 2 已采纳
- 2021-10-21 09:54回答 2 已采纳 其一:new String操作对象放在堆中,s1引用的是堆中地址,这个操作不会将字符串放在常量池,后面调用intern方法将字符串放入常量池,String 2 使用的是常量池中的对象,所以为false
- 2017-03-13 13:09回答 1 已采纳 在 Java 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存
- 2020-09-03 23:28主要介绍了Java中的字符串常量池详细介绍,JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池,需要的朋友可以参考下
- 2020-08-25 18:51主要介绍了Java String 字符串常量池解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
- 2020-08-18 18:54Java作为一种平台无关性的语言,其主要依靠于Java虚拟机——JVM,接下来通过本文给大家介绍JVM之内存结构及字符串常量池的相关知识,需要的朋友可以参考下
- 2016-03-01 12:57回答 7 已采纳 string是比较特殊的。 new String就好比开了一个空间里面装着aaa而且有了自己的地址符。也就是说是一个对象了。 而String a也是一个对象,你要记得每个类型都有默认值的,但是后面
- 2016-02-17 07:29回答 6 已采纳 字符串常量会存在常量池里,每定义一个字符串,都会先查看常量池,如果有,就直接使用已有的,没有才定义,所以从开始到结尾只有一个helloworld。 为什么4楼的结果是false,因为比较的是c和d的
- 2021-12-07 22:55回答 2 已采纳 a和b确实在常量池里面,但是第三行代码执行之后的b就在堆内存了,两个地址已经不同了。可以看看这个网页有关String类的解析。https://www.runoob.com/java/java-stri
- 2021-02-13 01:47天日可人的博客 本文将介绍 HotSpot 中的 String Pool,字符串常量池。相对是一篇比较简单的文章,大家花几分钟就看完了。在 Java 世界中,构造一个 Java 对象是一个相对比较重的活,而且还需要垃圾回收,而缓存池就是为了缓解这个...
- 2021-03-06 23:12遇见cy的博客 最近做到一个题目:问题:String str = new String(“abc”),“abc”在内存中是怎么分配的? 答案是:堆,字符串常量区。...Java中的字符串常量池Java中字符串对象创建有两种形式,一种为字面量形式,如String...
- 2022-03-13 18:40new hilbert()的博客 包装类对象池是不是 JVM 常量池的一种? Java创建new String会产生多少个对象
- 2016-11-17 00:21回答 7 已采纳 String a ="a";String b="b";String c="ab".intern(); String d=(a+"b").intern(); System.out.println(c==
- 2016-08-11 09:09回答 3 已采纳 一、同一个类的方法是被各个实例对象共用的,指向的地址一样。 对比:这和属性不同,属性一般每个对象都有自己的一份,当然了静态属性也是共用的。 二、很多问题自己是可以测试的,学会自己测试
- 2021-09-22 17:46回答 1 已采纳 这个你要想想,实例变量和类变量! 你说的那个是实例变量,在实例没有产生之前就没有存在,这个就可以解决你的问题了! 而你反编译后,有存在,是指存在于class文件中,也就是说你定义过!
- 2020-08-04 09:40喃乔的博客 Java为了避免产生大量的字符串对象,设计了一个字符串池(String Pool),通过初始化方式创建的字符串对象都会存在于字符串池中,且字符串池中的字符串不会重复,以便可以被共享使用,提高存储效率。 其工作原理是:...
- 2016-03-28 10:55有且仅有的博客 开篇同学们面试的时候总会被问到字符串常量池的问题吧?如果你是死记硬背的答案,那么我想看了我这篇文章,你应该以后能胸有成竹了跟着Alan,走起!1. 享元模式其实常量池这个问题涉及到一个设计模式,叫“享元模式...
- 2020-09-01 16:59本文主要介绍Java中的字符串常量池的知识,这里整理了相关资料及简单示例代码帮助大家学习理解此部分的知识,有需要的小伙伴可以参考下
- 2022-01-19 20:43回答 4 已采纳 没有的话,会在常量池创建"hsp",再把String对象的引用指向常量池"hsp"
- 2019-06-19 18:23数据的星辰大海的博客 字符串常量池,程序当中直接写上双引号字符串,就在字符串常量池中 * 对于基本类型来说 == 是进行数值得比较 * 对于引用类型来说 == 是进行【地址值】比较 String s1 = "abc"; String s2 = "abc"; System.out....
- 没有解决我的问题, 去提问