社区
Web 开发
帖子详情
String创建对象问题
dreamhyz
2008-03-05 08:19:42
以下代码共创建了几个对象
String s1=new String("hello");
String s2=new String("hello");
String s3=s1;
String s4=s2;
请给出详细的解答,谢谢。
...全文
176
14
打赏
收藏
String创建对象问题
以下代码共创建了几个对象 String s1=new String("hello"); String s2=new String("hello"); String s3=s1; String s4=s2; 请给出详细的解答,谢谢。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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个对象
json-lib-2.4 jar 程序文件
json jar 包,java 开发Ajax ,封装json格式的jar包工具
Java 中
String
创建对象
文章目录
String
创建对象
的两种方式两种创建
String
对象的区别例1例2例3例4总结
String
创建对象
的两种方式 (1)方式一:直接赋值
String
s1 = "hello"; (2) 方式二 调用构造器
String
s2 = new
String
("hello"); 两种创建
String
对象的区别 方式一:先从常量池查看是否有"hello"的数据空间,如果有,直接指向其数据空间,如果没有,则重新创建,然后指向s1。s1最终指向的是常量池空间地址。 方式二:先再堆中创建空间,里面维护了va
new
String
到底创建了几个对象
一简单面试题 1题目 new
String
("ab")会创建几个对象? 2代码 /** * 题目: * new
String
("ab")会创建几个对象?看字节码,就知道是两个。 * 第一个对象是:new关键字在堆空间创建的 * 第二个对象是:字符串常量池中的对象"ab"。 字节码指令:ldc */ public class
String
NewTest { public static void main(
String
[] args) {
String
str = n...
个人理解
String
s = new
String
("
string
")的对象创建
Java中
String
对象设置为final不可变,同时利用了常量池来对
String
对象进行存储管理,这就使
String
对象区别于一般的引用对象类型。 当我们创建
String
对象时,JVM会先在常量池寻找,如果已存在该对象,直接使用,如果不存在,就在常量池中
创建对象
。 1、
String
s = “
string
”; 如果常量池中存在“
string
”,就直接将引用赋予对象s,此时没有
String
对象
String
创建了几个对象的
问题
情况一
String
str1 = "hello"; 如果字符串常量池中不存在“hello”,创建1个对象,否则创建0个对象。 情况二
String
str2 = "hello, " + "world"; 上面的代码会进行编译期优化,等价于
String
str1 = “hello, world”,与情况一 相同。 情况三 new
String
("hello); 如果字符串常量池中不存在"hello",创建2个对象,否则创建1个对象。 情况四 ...
Web 开发
81,122
社区成员
341,744
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章