今天开始看JAVA编程思想, 巩固基础。
看到这里
String a = "aa";与
String a = new String("aa");
就有个疑问,
在书中他是这样说的: String a = new String("aa")它不仅表示“给我一个新的字符串”, 而且通过提供一个初始化字符串, 给出怎么样产生这个String的信息.
但是在内存中,String a = new String("aa"); 与 String a = "aa";
有什么区别呢? 哪种更好?
"aa",这个本身就是一个字符串对象,字符串对象是一个常量,一旦初始化,就不可更改,存在于内存常量池中。
前面String a "的意思就是在栈中创建一个字符串类型的变量a,
所以String a = "aa"的意思就是将字符串对象"aa"的内存地址赋给字符串变量a
String a = new String("aa")中有两个对象,一个是"aa"同上,另一个则是new String(),此对象创建时通过构造函数用字符串"aa"进行初始化,这两个对象内存地址是不一样的
至于哪一个好,要看具体环境吧,不过通过new创建字符串对象时,可以通过构造函数初始化,功能比较强大吧,范围应用也广些,LZ可以参考API中String类的构造方法