Posted on 2006-12-04 10:22
itVincent 阅读(534)
评论(1) 编辑 收藏 所属分类:
Java基础
在CSDN上看到个String的问题,趁机会自己总结一下,问题是这样的:
String a = "JAVA";
String b = "JAVA";
String c = new String("JAVA");
String d = "JA";
String e = "VA";
String f = "JA"+"VA";
String g = d+e;
String h = c;
System.out.println(a==b);//TRUE
System.out.println(a==c);//FALSE
System.out.println(a==f);//TRUE
System.out.println(a==g);//FALSE
System.out.println(c==f);//FALSE
System.out.println(c==g);//FALSE
System.out.println(c==h);//TRUE
//为什么a==g是FALSE呢?
下面逐一的说:
System.out.println(a==b);//TRUE 通过String str=""这种方式获得的相同内容的String指向同一个intern对象,不会重复创建新的对象
System.out.println(a==c);//FALSE 通过new String()方式生成的是一个新的对象,可通过intern()方法指向同一个intern对象
System.out.println(a==f);//TRUE "JA"+"VA";会在编译期换为"JAVA"
System.out.println(a==g);//FALSE d+e后,是新的String了,不会在编译期完成
System.out.println(c==f);//FALSE 这个很简单,地球人都知道
System.out.println(c==g);//FALSE 这个很简单,地球人都知道
System.out.println(c==h);//TRUE 这个很简单,地球人都知道