问一个关于对象创建的问题 String s = new String("a"+"a"+"c"+"d");问创建了几个对象 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不可能是1个的。至少2个我现在不清楚"a"+"a"+"c"+"d" 到底创建了几个对象 新创建的不一定,比如如果栈里面有a,那么这时候就不会再次在栈中创建a。如果栈里没有:acdaaaacaacds7个吧。 是7个.楼上正解String 在这个问题上会给内存造成大量的垃圾!所以StringBuffer会解决这个问题 只有 一个对象 accd 2个常量池一个"aacd"new 操作符在堆中创建一个 错了吧,s是引用不是对象,是在栈里面创建的其他是对象但编译的时候把常量已经优化成aacd,运行的栈里只有对这个常量池里常量的引用符号同时new会在堆里创建一个内容是aacd的字符串对象并用引用s指向这个对象 7个对于String相加的每次加一下就等于new了一个对象像你这样写就等于重复创建了好几个对象,消耗了性能一般字符串拼接解决方法是用StringBuffer或StringBuilder例如:StringBuffer snb=new StringBuffer("a");snd.append("c");.... java界面的背景图片怎么加 final 关键字 请教一个字符串处理的方法 为何Applet不需要main方法 "java"编程的信息传递 一个字符匹配的问题。正 则得不知道有没有人会!头都想疼了啊 上传问题 在线等 我不知道Iterator的第一个无素怎么访问 帮忙查错,读取binary image data的ImageReader 取值? 这种方式集成SPRING2。0和STRUTS2。0太奇怪了 求一正则表达式
我现在不清楚"a"+"a"+"c"+"d" 到底创建了几个对象
如果栈里没有:
a
c
d
aa
aac
aacd
s7个吧。
String 在这个问题上会给内存造成大量的垃圾!
所以StringBuffer会解决这个问题
常量池一个"aacd"
new 操作符在堆中创建一个
其他是对象但编译的时候把常量已经优化成aacd,运行的栈里只有对这个常量池里常量的引用符号
同时new会在堆里创建一个内容是aacd的字符串对象并用引用s指向这个对象
对于String相加的每次加一下就等于new了一个对象
像你这样写就等于重复创建了好几个对象,消耗了性能
一般字符串拼接解决方法是用StringBuffer或StringBuilder
例如:
StringBuffer snb=new StringBuffer("a");
snd.append("c");
....