书上说equals()是比较两个字符串的数值是否一样;
“==”是判断两个字符串是否引自同一实例;大家看下这两个例子:
一,
package hello;
//字符串比较示例
class StringUse
{
public static void main(String args[])
{
String s1="abc";
String s2=new String(s1);

System.out.println(s1+" equals "+s2+": "+s1.equals(s2));
System.out.println(s1+"=="+s2+": "+(s1==s2)); }
}输出结果为:
abc equals abc: true
abc==abc: false
二,
package hello;
//字符串比较示例
class StringUse
{
public static void main(String args[])
{
String s1="abc";
String s2="abc";

System.out.println(s1+" equals "+s2+": "+s1.equals(s2));
System.out.println(s1+"=="+s2+": "+(s1==s2)); }
}
输出结果为:
abc equals abc: true
abc==abc: true很纳闷,给大家帮忙~~~

解决方案 »

  1.   

    第一个:你开辟了一个s2得空间 当然你用s1==s2肯定不行 你只能复制给s2第二个:你是申请了两个变量,当然,如果你指向他们两个相等肯定为trueequals于==的区别在于, equals在于是检测两个对象是否相等,而==是则是比较引用和比较基本数据类型有没有相同的功能
      

  2.   

    5分好少哦。 首先,结论正确。下面的例子中。一个使用new得到的String,String s2="abc"是直接冲常量池得到String.他们的不同点是,new 始终是新建一个对象。而s2="abc"这种写法,不是新建对象,是直接引用常量池里的对象。为了节省内存,完全相同的string在常量池里占用肯定只需要有一个实例。所以,s1="abc" s2="abc"他们都指向常量池里的同一块内存,引用同一个对象。