日期:2014-05-20  浏览次数:20613 次

关于创建对象的疑问?高手请进
String   s1   =   "hello ";
String   s2   =   "hello ";

请问这是创建了一个hello字符串,还是两个单独的字符串????

------解决方案--------------------
楼上的两位同学的答案貌似正确,实际上害人不浅。

"hello "作为字符串常量,它们都放在JVM的对象池中,也就是说,上面的s1和s2指向了同一个字符串,也就是说s1 == s2的值是true。

结贴给分吧,谢谢。
------解决方案--------------------
String s1 = "hello ";
String s2 = "hello ";

这中创建字符串的方式,“hello”是存储在栈中的,一般称为常量池的方式,这样的方式创建可以说 :s1 == s2 ;
如果是: String s1 = new String( "hello ");

------解决方案--------------------
String s2 = new String( "hello ");
这是 s1 s2表示是对象的引用 ,s1 = s2
但是他们的内容是相同的 一般用equals() 和compareto()来比较他们的内容~!
s1.equls(s2) 为true;
s1.compareto(s2) == 1;


个人观点 !