1. java 建立String对象
Java运行环境有一个字符串池,由String类维护。执行语句String s="abc"时,首先查看字符串池中是否存在字符串"abc",如果存在则直接将"abc"赋给s,如果不存在则先在字符串池中新建一个字符串
"abc",然后再将其赋给s。
执行语句String s=new String("abc")时,不管字符串池中是否存在字
符串"abc",直接新建一个字符串"abc"(注意:新建的字符串"abc"不是在字符串池中),然后将其付给s。
前一语句的效率高,后一语句的效率低,因为新建字符串占用内存空间。
2. Java中的String类
Java运行环境有一个类似字符串池的东东。
1.
执行语句String
str="str"时,首先查看字符串池中是否存在字符串"abc",如果存在则直接将"abc"的引用给str,如果不存在则先在字符串池中新建一个字符串"abc",然后再将其引用给给str。
2.
执行语句String
str
=
new
String(
"str");
首先在String池内找,找到?不创建String对象,否则创建,
这样就一个String对象;然后遇到new运算符号,又在内存上创建String对象,并将其返回给str,又一个对象
所以总共是2个
例:
String
s1="str";
String
s2="str";
String
s3=new
String("str");
String
s4=new
String("str");
system.out.println(s1==s2);
//
true
system.out.println(s1==s3);
//
false
system.out.println(s3==s4);
//
false