java 建立String对象

来源:百度知道 编辑:UC知道 时间:2024/07/04 23:32:05
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。
前一语句的效率高,后一语句的效率低,因为新建字符串占用内存空间。

很简单一句话就搞定了:
String s = new String("abc"); 新建了一个对象将abc放进去,也就是放到了内存中
String s = "abc"; 只是个字符串变量 两个s虽然数值相等但真正意义并不想等

String s = new String("abc");
是在堆里面创建一个“abc”的对象,用S指向这个对象的地址
String s = "abc";
是在StringPool里创建一个"abc"(如果有就不创建),并把S指向这个"abc"

Sting 类 是java 经过特殊处理的类
所谓的特殊处理 就是可以直接写成
String s = "abc";这种形式
从效果来说String s = new String("abc");
和String s = "abc";是一样的
要说区别的话就是 String s = new String("abc");创建了一个对象,引用s 指向那个对象
而String s = "abc"; 没有实例