itVincent Blog - Java Working Fun!

技术引领时代!
posts - 117, comments - 181, trackbacks - 0, articles - 12

在CSDN上看到个关于String的问题

Posted on 2006-12-04 10:22 itVincent 阅读(523) 评论(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 这个很简单,地球人都知道

 

Feedback

# re: 在CSDN上看到个关于String的问题  回复  更多评论   

2008-10-17 23:15 by 杨爱友
不错,这段程序描述出了string类型对象创建及存储的特点,是面试官问的频率最高的题目,我曾几次栽倒在这里。

只有注册用户登录后才能发表评论。


网站导航: