为了账号安全,请及时绑定邮箱和手机立即绑定

请问关于java的String类型内存的几点疑惑?

请问关于java的String类型内存的几点疑惑?

呼如林 2019-09-14 15:11:56
关于java的String类型内存的几点疑惑
查看完整描述

4 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

字符串"abc"只会创建一次。
而String,每次都会创建一次。
所以二次出现"abc",实际上是同一个对象。
后来又出现"def"是另一个对象。
s1是一个对象,s2也是一个对象。

谁能解释一下String s = "abc"; 与String s = new String("abc");之间内存的分配情况,当然前者创建一个对象,后者是创建两个对象。
这种说法本来就是错误的。如果"abc"在之前没有被定义过,那么这两种方式都将产生两个对象。如果"abc"在之前被定义过,那么两种都只产生一个对象。



查看完整回答
反对 回复 2019-09-17
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

3个对象。"abc" "def" "abcabcdef"
new String("abc");实际上是先在String pool里面申明一个abc的String,然后new String()就是说强行申请一个内存空间,就像是普通的类型的实例一样,而不是指向String pool 的内存地址。
而String s = "abc";是申请一个对象,是在String 的pool里面。s也指向的是这个内存地址

查看完整回答
反对 回复 2019-09-17
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

String s = new String("abc");
"abc"本身就是String对象,对于这个对象,jvm会按字符串池的规律来处理。
使用new关键字的,jvm会单独分配内存空间。
by pensiero.

查看完整回答
反对 回复 2019-09-17
  • 4 回答
  • 0 关注
  • 213 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信