java关于常量池的问题
在代码里直接写的String s ="abc"会把abc放在class文件的常量池。String#intern会把String放在运行时的常量池。new String实际上是ldc "cpool"new Ljava/lang/Stringinvokespecial \u0026lt;init\u0026gt;上面可能不太准确…手机打字好累
■网友
你老师说的没错。字符串本身是一个对象啊,对象在堆中,没毛病。所以常量池是个什么东西?并不是说常量池就像一个池子一样,常量都装在里面,实际上常量池里面放的只是一些引用,这些引用指向了堆中的具体的对象。另外题主对于常量池有点一概而论的感觉。在class文件中存在一个常量池,里面主要放的字面量和符号引用,很明显,你的"123"作为字符串字面量就在这里面;方法区中有一个常量池叫做运行时常量池,方法区外有个常量池叫做字符串常量池(与方法区平级),后者是全局共享的。加载class文件时,class文件中的常量池中的大部分东东会进入运行时常量池,但String是“进入”字符串常量池。这个进入为什么要加引号呢,最上面已经说了,字符串本身是在堆中(和其他一般对象一个鸟样,刚出来的时候很大可能是在eden中),然后在字符串常量池中有指向它的引用。大概长这样: 【java关于常量池的问题】 
■网友
同好奇一下,什么学校啊?赞同那条详细的回答,反对+没有帮助那条2B回答。
■网友
正在学习jvm,第一个问题“123”作为字符串常量在编译期就被放到了常量池,关于常量池可以参考:常量池 · JVM学习笔记(正在学习中,欢迎start,一起学习)。至于为什么把常量池,确切的说是运行时常量池放到方法区,你就当作jvm就是这么设计的就行了吧。
推荐阅读
- 过节■江苏省委省政府办公厅下发关于做好2021年元旦春节期间有关工作的通知
- |徐州市出台《关于优化创新创业生态系统 提升区域科技创新活力的实施意见》及实施细则
- 雨下|全球关于禁售燃油车只是理论上可行吗
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 关于用phpfsocket 写Post, 模拟http 报文怎样写入要传输的处理数据
- 智叔|很多家长还在整箱买:谈谈关于牛奶的17个真相警惕这些列入黑名单的“假牛奶”
- 关于微信小程序的思考:运营者该何去何从
- 关于人工智能虚拟人的一些问题
- 知乎上关于人生经验的介绍是否可能对青少年造成潜在危害
- Java工程师和C++工程师在工作上有啥区别哪个更适合自身发展
