以前都没怎么注意! 谁能告诉我if(a==b) 和 if("a".equals("b")) 有什么差别!比如 当a b为String的时候
     当a b为对象的时候
     当a b为int类型的时候我都应该用哪个!!!! 

解决方案 »

  1.   

    是不是 如果是String的话 用 equals
          如果是int的话 用 ==
          
          如果是对象的话   也是用equals???? 
      

  2.   

    if(a==b) 判断的是对象
    if("a".equals("b")) 判断的是内容
      

  3.   

    ==是基本数据类型的比较String是应用类型,== 时,只是比较地址 (连接连接池,自己百度一下)内容比较时,要用equals方法。
      

  4.   

      这个问题就别写个: “高手进,。。” 了 !!! 自己baidu一下多的是.. 
      

  5.   


    就回答你的问题吧,
    当ab为string的时候,用equal;
    当ab为int的时候,用==;
    当ab为对象的时候,具体情况具体分析。
      

  6.   

    是不是 如果是String的话 用 equals
    如果是int的话 用 ==
    如果是对象的话 也是用equals????
      

  7.   

    如果是字符串时:if("a".equals("b")) 判断的是内容相等
                    ==判断的时候要求对象完全相同
    如果是int的话:==判断相不相等了
      

  8.   

    ==是断定引用啊,比较内存地址是否一样。equals默认的比较跟==是差不多的,不重写的情况下,一样用,就是有个特殊,但比较的是具体的数值时,比如int double等等,是必须用==不同的是,equals存在重写,只有重写了,才能比较内容。在这里又有一个特殊类String,这个类默认的情况下已经重写啦,所以是比较内容。其它的类必须重写equals 方法
      

  9.   

    == 是同一个对象  结果为  true 
    equals  要看那个类 的这个方法是怎么写的。不能说一定是比较内容,这样说不准确
      

  10.   

    if(a==b) == 是地址的比较if("a".equals("b"))   这个是内容比较=    是赋值  
      

  11.   

    a==b 这个是两个地址作比较,这个东西是如果相等那是绝对的相等 也就是说a==b 那么 b==a也成立,有对称性,a.equals(b)  这个 equals是a对象里的方法(继承自Object),有可能重写了,怎么重写这个由程序员决定,所以 a.equals(b) 这个比较主观性很强, a.equlas(b)成立也不能说明b.equals(a)成立,所以这个没有绝对的对称性。 
    == 和equals返回的都是boolean值,但比较方式上,前者没有重写,而equals可以重写。
    一般来说  比较两个对象是否指向同一个引用==
    equals则用于判断两个对象值是否相同,这个取决于程序员或是项目的怎么写equals的规范。
      

  12.   

    1.如果是对象
       (1)a==b,是指引用地址一样,两个是同一个对象
       (2)a.equals(b)只是值一样2.如果是基本类型(如int)
        只能用a==b,没有引用地址的概念
      

  13.   

    a=b 对象比对
    "a".equals("b"); 是内容对比
      

  14.   

    劝告你一些
    1.如果你想把编程学习好,首先要把基础的东西看好!这些事很基础而且是很重要
    2.这些问题先google or baidu.
      

  15.   

    if(a==b)
    当a、b为基本的数据类型是比较的是数值
    当a、b为对象时比较的是是否是同一个应用,说白了就是看是不是同一个内存地址
    if("a".equals("b")) 
    一般就是两个对象进行比较,equals(Object)方法出自Class Object{},而每一个对象类型都继承自Object,你想怎么比较,你就可以在你定义的Class中重写equals(Object)方法,想怎么比较就怎么比较
      

  16.   

    1 a,b 为 int时,此时为值类型,用 “=”等于号比较值 
    2. a,b 为object时,注:String也是对象类型,此时为引用类型,用equals比较两个对象的内容,如果用“=”等于号比较两个object,则是对两个对象的内存地址做比较,看是否是同一引用对象。
      

  17.   

    ==      判断的是是否是同一个对象
    .equals 判断的是两个对象的值是否相同
      

  18.   

    真正要说清楚,必需熟悉C++的内存分配原理
    你只要知道:equals方法是Object类的一个方法,而String重写了那个方法具体实现如下:    
    public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = count;
        if (n == anotherString.count) {
    char v1[] = value;
    char v2[] = anotherString.value;
    int i = offset;
    int j = anotherString.offset;
    while (n-- != 0) {
        if (v1[i++] != v2[j++])
    return false;
    }
    return true;
        }
    }
    return false;
        }
    其中 count:the number of characters in the String(该String的字符数量)
    value:The value is used for character storage(是一个char数组,就是这个String的每个字符组成的数组)
    offset:the first index of the storage that is used(value数组的当前下标)
    注:String的这三个成员变量都是私有的最终变量,所以String是不可变的
    重上面我们可以看出,String a,b如果equals 那么他们必需是一模一样的两个字符串而==这个符号指的是地址相同,即:如果是基本类型,则其值相同。如果是对象类型,则a,b必需指向同一个对象,也就是:如果a= new Object();
    使b==a的唯一条件是:b=a(即把a的引用地址付给b)
    但是对于String a="123"; String b ="123";这种特殊的对象类型声明方式,其内存解析如下:
    在内存的常量区分出一块内存存放"123",把声明的变量a指向这个"123",而把声明的变量b也指向了这个"123" 所以 a==b是正确的
    如果是:String a = new String("123"); String b = new String("123");
    这样a==b就是错的了
      

  19.   

    我不是高手,所以还是回答下.
    equals方法是判断字符是不是一致,"=="是判断是不是同一个对象.
      

  20.   

    ==是指内容相等
    equals是指字符串
      

  21.   

    多查查资料。。
    a,b 为 int时,此时为值类型,用 “=”等于号比较值  
     a,b 为object时,注:String也是对象类型,此时为引用类型,用equals比较两个对象的内容,如果用“=”等于号比较两个object,则是对两个对象的内存地址做比较,看是否是同一引用对象。
      

  22.   

    equals时你也可以重写hashcode()来自己定义如何比较
      

  23.   

    当 a  和 b  都为 string 时 用equals
      

  24.   

    如果你想要判断其他对象是否equals,是需要重载equals方法的.不重载时,==是判断是不是一个引用,equals表示他两hashcode是不是一致.
      

  25.   

    比较类里面的数值是否相等时,用equals()方法;当测试两个包装类的引用是否指向同一个对象时,用==
      

  26.   

    String a="abc";
    String b="abc";
    int a1=1;
    int b1=1;
    a.equals(b)成立但是a==b不成立;
    a1.equals(b1)成立但是a1==b1也成立;
    如果a.equals(b)成立,a==b不一定成立;
    如果a==b成立,a.equals(b)一定成立;
    凭自己感觉呵呵
      

  27.   

    ==地址的比较,equals是内容的比较
      

  28.   

    if(a == b)代表的是两个对象是否指向的是内存中的同一个区域,即对象的引用相同
    if( a.equals(b))你可以重写a中的equals方法,因为如果你用的是a继承Object的equals方法等同于用  a == b,如果你是用的java的类库中的方法,可以看看其源码equals的实现,一般情况下如果类内的成员变量相等表示其相等如 String  a  = "abc";
      String  b  ="abc";
      a.equals(b)  为 true;
      

  29.   

    呃  看到上面的回答  学习了,也感觉很有道理。
    沾楼主的光抛个疑问: 我经常用  f(object_A==null){...}那这里就是比较 object_A 和 null的地址是否来自同
    一个地址了。
    只是不知道这个null的地址怎么算来着呢?
      

  30.   

    结贴言!
    == 比较的是地址
    equals 比较的是内容对于基本数据类型来说 == 比较的是内容 因为他们地址都在栈中 只要内容相等 就会相等!无equals方法
           但是 如String a=“123”;  此时他只有栈地址 没有堆地址!
    对于其他数据类型 包括String  == 比较的是内容+地址! 就是判断2个对象的堆地址是不是一样的!
           而equals判断的是内容!!!!!!!!!!String a="123";             String a=new String(“dd”);
    String b="123"                String b=new  String(“dd”);
    a==b  a。equals(b)是对的     a==b是错的  a.equals(b); 是对的!
      

  31.   

    (1)如果是string的话 a==b 比较的是引用比较 "a".equals("b") 值比较(2)如果不是String类的就都是引用比较
      

  32.   

    当a b为String的时候 用equals
      当a b为对象的时候 用==
      当a b为int类型的时候 用==