第2章 Java编程基础——FAQ2.22 创建String对象时, 使用String s=new String (“abc”)和String s=“abc”语句有什么区别?
FAQ2.22 创建String对象时, 使用String s=new String (“abc”)和String s=“abc”语句有什么区别?
答:
Java运行环境有一个字符串池,由String类维护。执行语句String s="abc"时,首先查看字符串池中是否存在字符串"abc",如果存在则直接将"abc"赋给s,如果不存在则先在字符串池中新建一个字符串 "abc",然后再将其赋给s。执行语句String s=new String("abc")时,不管字符串池中是否存在字 符串"abc",直接新建一个字符串"abc"(注意:新建的字符串"abc"不是在字符串池中),然后将其付给s。前一语句的效率高,后一语句的效率低,因为新建字符串占用内存空间。
————————————————————————————————————————————————————————————————————————————————————————