String a=new String("b","c")的问题

String a=new String("b","c")会创建几个对象?
String a=new String("b"+"c")又会创建几个?为什么?
谢谢了。。。

5个回答

1、Java中New出的对象则始终被JVM存放在堆中,创建的字串常量则始终被JVM存放在数据段区常量池中。

2、String是不可变的

String a=new String("b"+"c");

字符串常量 "b" 被JVM存放在数据段区常量池中
字符串常量 "c" 被JVM存放在数据段区常量池中
由于String不可变性,"b"+"c" 又生成了一个字符串 被JVM存放在数据段区常量池中
new String("b"+"c")对象被JVM存放在堆中

总共四个。

Understand ?

[code="java"]String a=new String("b","c")[/code]
编译通过了 ???

[code="java"]String a=new String("b"+"c");[/code]
b一个
c一个
b+c一个
a一个
总共四个

String a=new String("b","c");编译失败
String a=new String("b"+"c");两个

注意 "b"+"c" 与 new String("b"+"c") 是两个不同的对象。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐