String创建对象问题

dreamhyz 2008-03-05 08:19:42
以下代码共创建了几个对象

String s1=new String("hello");
String s2=new String("hello");
String s3=s1;
String s4=s2;

请给出详细的解答,谢谢。
...全文
171 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xclcsf 2008-09-23
  • 打赏
  • 举报
回复
只创建了2个对象,也就是s1和s2
hotleavegjz 2008-06-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 Boloch 的回复:]
一共只有一个String对象被创建,因为对于String类型来说,是有一个字符池,也就是说当你创建一个String对象的时候,首先会去字符池看有没有匹配的String
  所以,s1,s2,s3,s4是指向同一个地址!
[/Quote]

同意. 也就是说说S1是一个对象, S2是一个对象, 然后S3和S4只是对象的引用(出现在Stack中).
mayfancy 2008-06-04
  • 打赏
  • 举报
回复
String[] a=new String[9];
创建多少个对象?
dreamhyz 2008-03-10
  • 打赏
  • 举报
回复
谢谢各位的精彩解答。。。
但哪种答案才是标准的呢,
好像各家都言之有理啊。。
Boloch 2008-03-08
  • 打赏
  • 举报
回复
一共只有一个String对象被创建,因为对于String类型来说,是有一个字符池,也就是说当你创建一个String对象的时候,首先会去字符池看有没有匹配的String
所以,s1,s2,s3,s4是指向同一个地址!
genii2008 2008-03-07
  • 打赏
  • 举报
回复
顶楼上
sky_ccy 2008-03-06
  • 打赏
  • 举报
回复
String s1=new String("hello");
//创建2个对象,一个“hello",
//hello 是在内存中因为字符串是常量
//,一个s1,在堆栈中创建了个引用对象
String s2=new String("hello");
//创建2个,因为有new 就会创建对象'hello",再在内存中创建hello,在堆栈中创建一个s2,也是对hello的引用
String s3=s1;
//对象地址赋值,创建对象,因为没有new
String s4=s2;
//同上

总共有几个你加一下,
有空去看一下 孙鑫的 java无难事 的视频 满有帮助的
Dragon_sxw 2008-03-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sky_ccy 的回复:]
String s1=new String("hello");
//创建2个对象,一个“hello",
//hello 是在内存中因为字符串是常量
//,一个s1,在堆栈中创建了个引用对象
String s2=new String("hello");
//创建2个,因为有new 就会创建对象'hello",再在内存中创建hello,在堆栈中创建一个s2,也是对hello的引用
String s3=s1;
//对象地址赋值,创建对象,因为没有new
String s4=s2;
//同上

总共有几个你加一下,
有空去看一下 孙鑫的 java无…
[/Quote]


孙鑫讲的也不是百分百正确的。。。
dreamhyz 2008-03-06
  • 打赏
  • 举报
回复
THANK YOU
qiuqiupeng 2008-03-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Mailbomb 的回复:]
String s1=new String("hello");
//创建2个对象,一个“hello",因为字符串是常量,一个s1,因为new
String s2=new String("hello");
//创建1个,因为'hello"已存在,所以不创建,创建一个s2,因为new
String s3=s1;
//对象地址赋值,不创建对象,因为没有new
String s4=s2;
//同上

总计创建3个对象

[/Quote]

三个,就是这样的,看看java虚拟机体系结构就知道了
dreamhyz 2008-03-05
  • 打赏
  • 举报
回复
谢谢
guazixing 2008-03-05
  • 打赏
  • 举报
回复
不敢苟同楼上的说法。具体的我也说不清楚。关注达人的解释把。
genii2008 2008-03-05
  • 打赏
  • 举报
回复
楼上正解
网络咖啡 2008-03-05
  • 打赏
  • 举报
回复
String s1=new String("hello");
//创建2个对象,一个“hello",因为字符串是常量,一个s1,因为new
String s2=new String("hello");
//创建1个,因为'hello"已存在,所以不创建,创建一个s2,因为new
String s3=s1;
//对象地址赋值,不创建对象,因为没有new
String s4=s2;
//同上

总计创建3个对象

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧