第2章 Java编程基础——FAQ2.22 创建String对象时, 使用String s=new String (“abc”)和String s=“abc”语句有什么区别?
2010-01-17 23:21
1006 查看
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。前一语句的效率高,后一语句的效率低,因为新建字符串占用内存空间。
————————————————————————————————————————————————————————————————————————————————————————
答:
Java运行环境有一个字符串池,由String类维护。执行语句String s="abc"时,首先查看字符串池中是否存在字符串"abc",如果存在则直接将"abc"赋给s,如果不存在则先在字符串池中新建一个字符串 "abc",然后再将其赋给s。执行语句String s=new String("abc")时,不管字符串池中是否存在字 符串"abc",直接新建一个字符串"abc"(注意:新建的字符串"abc"不是在字符串池中),然后将其付给s。前一语句的效率高,后一语句的效率低,因为新建字符串占用内存空间。
————————————————————————————————————————————————————————————————————————————————————————
相关文章推荐
- 创建String对象时, 使用String s=new String ("abc")和String s="abc"语句有什么区别?
- 第2章 Java编程基础——FAQ2.23 break和continue语句有什么区别?
- 第2章 Java编程基础——FAQ2.13 成员变量和局部变量有什么区别?
- 第2章 Java编程基础——FAQ2.18 在实现x递增加1操作时, x++和++x有什么区别?
- Java基础:创建String对象时,String s=new String("abc")和String s="abc"的区别
- 第2章 Java编程基础——FAQ2.11 int和Integer都可以作为整数类型, 那么它们有什么区别?
- 第2章 Java编程基础——FAQ2.21 ==和equals()都可用于比较两个操作数是否相等, 它们有什么区别吗?
- 第2章 Java编程基础——FAQ2.19 x?y:z格式的语句表示什么意思?
- 第2章 Java编程基础——FAQ2.03 用public. protected和private修饰方法有什么区别?
- 第2章 Java编程基础——FAQ2.17 在执行与运算时, 运算符&和&&有什么区别?
- java基础复习之对于String对象,能够使用“=”赋值,也能够使用newkeyword赋值,两种方式有什么差别?
- Java和C#中String直接赋值与使用new创建(==与equals进行比较)的区别
- 对于String对象,可以使用"="赋值,也可以使用"new"关键字赋值,两种方式有什么区别?
- Java和C#中String直接赋值与使用new创建(==与equals进行比较)的区别
- java中创建String类型对象的两种方式以及在使用equals()和“==”两种方法时的区别
- 对于String对象,可以使用"="赋值,也可以使用"new"关键字赋值,两种方式有什么区别?
- java下Class.forName的作用是什么,为什么要使用它(和new对象的区别)
- Java中创建String、Integer、Charater直接赋值与new一个对象的区别
- 第2章 Java编程基础——FAQ2.14 变量之间传值时可分为值传递和引用传递, 那么它们有何区别?
- Java中用字符串常量赋值和使用new构造String对象的区别