首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

String s = new String("abc");和String s = "abc"解决方案

2012-01-30 
String s new String(abc)和String s abcStringsnewString( abc )和Strings;sabc 和Str

String s = new String("abc");和String s = "abc";
String   s   =   new   String( "abc ");

String   s;
s   =   "abc ";

String   s   =   "abc ";
有什么区别

[解决办法]
参考:http://blog.csdn.net/sunnyjavamoon/archive/2006/07/13/913599.aspx
[解决办法]
String s = "abc ";
是在常量池中生成了一个字符串常量(若常量池中目前没有 "abc "),而引用s指向它。
String s = new String( "abc ");
是先在常量池中生成了一个字符串常量(若常量池中目前没有 "abc "),然后在heap中生成一个String对象,该对象的内容就是这个常量,然后才是String类型的引用s指向这个String对象。
[解决办法]
你不觉得String s = "abc ";这种形式比String s = new String( "abc ");这种形式使用起来简单吗?这不就是好处?另外,前者支持“+”的操作,即 s1 + s2,后者不支持。

而之所以String s = new String( "abc ");这种形式会存在,是因为java中的String是对象,应当有这种按照一般生成对象的方法来生成String对象,即用new关键词生成新对象。
[解决办法]
用String s = "ABC ";
不要用String s = new String( "ABC ");
前者有编译器控制优化,后者无故增加开销。

热点排行
Bad Request.