比较地址用==,比较内容用equals

解决方案 »

  1.   

    copy来的一段关于String的
    看看吧
      

  2.   

    copy来的一段关于String的
    看看吧
    str="";   在内存中开辟了空间,只是没有放东西,可以使用这个引用str
    str = null;只是说明有这么个String的引用str,但是没有给他分配空间,不能在程序中使  
               用str,顶多出现在判断语句中,if (str==null)...  str = null,多数情况是
               之前已经有了str="...";通过str=null,告诉编译器,我原来申请的空间不要
               了,你可以回收了。
    String str=new String();应该和str=""一样的作用.
    str==""这样比较是不可以的,因为str是某块内存的引用,""虽然没有放东西,但是也代表
           某块内存的引用,if (str=="")...  只是在比较这两个引用(当然不等)
           ,而不是比较他们引用空间的内容
    一般比较String的时候是通过s1.equals("s2")来实现的,当然也可以
    if (s1.compareTo(s2))==0 ...  (表示s1,s2内容相等)
      

  3.   

    一般的说来,在比较常量,比如1,2,3,4,5...的时候用==,比较字符串用equals
    比如int i = 1;
    if(i==1)
    {
    .....
    }String str = "hello";
    if(str.equals("hello"))
    {
    ....
    }
      

  4.   

    我有条简记对象时equals过程编码  ==就行
      

  5.   

    equals()一般是类中用来实现比较的方法.
    ==是用来比较两个"对象"的引用是不是指向同一个对象.
    如果用==比较的不是对象而是简单类型,则都是比较他们的值是否相等.java类库中String实现了equals()方法.
    在你的类要用一些特定的标准判断是否相等(或相同)时也需要实现该方法.
    如:判断一个学生类,实现equals()方法学号判断只要相同就认为是同一个学生.
      

  6.   

    既然==是比较两个对象的引用是否指向同一个对象,那么String a=new String("hi");
    String b=new String("hi");Boolean e=(a==b);//为什么这个a==b为true?a跟b按道理应该是分别分配对象,虽然大家的内容是一样的
      

  7.   

    == 两个对象是否是同一个对象。
    equals 两个对象内容是否相同。我的印象中,整个java规范里只有jvm的pcode里有地址的概念。
    java语言里,所有对象都是引用(reference)。
    而且 即使 object1 == object2,
    object1 和 object2的reference value 也不一定相等。
    而是这两个reference 引用了同一个对象。这点在纯java环境里是看不到的,
    不过用过JNI的朋友可以用NewGlobalRef来证明这一点。
      

  8.   

    但如果这样呢
    public class E{
    public static void main(String[] args){
    String a="hi";
    String b="hi";


    System.out.println(a==b);//为什么是true?
                }
    }
      

  9.   

    楼上的就是一样的。
    我自己写了一个类abc,
    然后加入arraylist.add(abc)
    然后if (arraylist.get(i) ?? abc == true)
    ??处写==,还是equals
      

  10.   

    equals()的缺省行为是拿references来比较。Java标准程序库中大多数class都覆写(override)了equals(),所以它们都会比较对象(而非其references)的内容是否相等。举一个《Thinking in Java》中的例子:
    class Value
    {
       int i;
     }public class EqualsMethod2
    {
       public static void main(String args[])
       {
          Value v1 = new Value();
          Value v2 = new Value();
          v1.i = v2.i = 10;
          System.out.println(v1.equals(v2));
       }
    }
    其输出的结果是false.
      

  11.   

    再比如:
    public class EqualsMethod
    {
       public static void main(String args[])
       {
          Integer n1 = new Integer(47);
          Integer n2 = new Integer(47);
          System.out.println(n1.equals(n2));
       }
    }
    //the result is true