日期:2014-05-20  浏览次数:20658 次

关于String的问题
请问String   a= "abc ";
与String   a=new   String();
    a= "abc ";
有什么区别

------解决方案--------------------
Java运行环境有一个字符串池,由String类维护。执行语句String str= "abc "时,首先查看字符串池中是否存在字符串 "abc ",如果存在则直接将 "abc "赋给str,如果不存在则先在字符串池中新建一个字符串 "abc ",然后再将其赋给str。执行语句String str=new String( "abc ")时,不管字符串池中是否存在字符串 "abc ",直接新建一个字符串 "abc "(注意:新建的字符串 "abc "不是在字符串池中),然后将其付给str。前一语句的效率高,后一语句的效率低,因为新建字符串占用内存空间。String str = new String()创建了一个空字符串,与String str=new String( " ")相同