关于String的问题。

String s1 = new String("aaa");

在内存中的创建过程为:
1. 首先在栈内存中为s1分配一块空间。
2. 在堆内存中为String对象分配一块空间,并设定初始值。
3. 根据String类中对属性的定义,为对象的属性进行赋值操作。
4. 调用构造方法
5. 讲String对象在内存中的地址赋值给栈中的 s1。

正常对象的创建过程应该是这样的。我想请问,"aaa"放到了字符串的常量池了吗?
全部评论
String s1="abc"这是放在了常量池,只有一个常量池对象 String s2 = new String("abc");其实是有两个对象,一个是堆对象,一个是常量池对象
点赞 回复 分享
发布于 2019-03-01 16:54
有的吧,编译的时候就把"aaa"放进了字符串常量池,运行的时候在new对象
点赞 回复 分享
发布于 2019-03-01 22:51
https://www.cnblogs.com/xiaoxi/p/6036701.html 这篇文章讲的很详细。
点赞 回复 分享
发布于 2019-03-01 16:59
jdk1.7以上会同时在常量区和堆中生成。1.7把常量区移到堆里面了。
点赞 回复 分享
发布于 2019-03-01 23:06
楼上说的对
点赞 回复 分享
发布于 2019-03-01 16:56
没有
点赞 回复 分享
发布于 2019-03-01 16:10
String a = new String("a"); String b = new String("a"); System.out.println(a==b); 执行为false,证明没有放常量池
点赞 回复 分享
发布于 2019-03-01 16:06
CXX的new不是开在堆里面嘛(
点赞 回复 分享
发布于 2019-03-01 16:04

相关推荐

04-18 00:32
已编辑
中南大学 Java
点赞 评论 收藏
分享
05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
评论
点赞
5
分享

创作者周榜

更多
牛客网
牛客企业服务