重识String
public class TestString {
public static void main(String[] args) {
/**
* Java运行环境有一个字符串池,由String类维护。
* 执行语句String str="abc"时,首先查看字符串池中是否存在字符串"abc",
* 假如存在则直接将"abc"赋给str,
* 假如不存在则先在字符串池中新建一个字符串"abc",然后再将其赋给str。
* 执行语句String str=new String("abc")时,
* 不管字符串池中是否存在字符串"abc",
* 直接新建一个字符串"abc"(注意:新建的字符串"abc"不是在字符串池中),然后将其付给str。
* 前一语句的效率高,后一语句的效率低,因为新建字符串占用内存空间。
* String str = new String()创建了一个空字符串,和String str=new String("")相同
* intern()method返回字符串对象的规范化表示形式
*/
String a = new String();
String aa = "";
String aaa = new String("");
String b = new String("asdf");
String c = new String("asdf");
String d = "asdf";
System.out.println(a == aa);//false
System.out.println(a == aaa);//false
System.out.println(a.intern() == aa.intern());
System.out.println(a.intern() == aaa.intern());
System.out.println(d == "asdf");
System.out.println(b == c);//false
System.out.println(b == d);//false
System.out.println(b.equals(c));//true
System.out.println(b.equals(d));//true
b = b.intern();
System.out.println(b == c);//false
System.out.println(b == d);//true
c = c.intern();
System.out.println(b == c);//true
//abc 栈
String str1 = new String("abc");
String str2 = new String("abc");
String s1 = "abc" ;
String s2 = "abc" ;
if( s1 == s2 )
System.out.println("s1,s2 refer to the same object");
else
System.out.println("trouble");
String str = new String("jf"); // jf是接分
str = 1+2+str+3+4;
System.out.println(str);
}
}
lunzi
2008-11-30 00:07:32
评论:1
阅读:36
引用:0
无题
@2008-12-17 22:41:16
谢了! 我是初学者
