equals ==(不求甚解) 十六

来源:互联网 发布:免费语音电话软件 编辑:程序博客网 时间:2024/06/08 12:32
/**
 * 总之: 
“==”比较的是值【变量(栈)内存中存放的对象的(堆)内存地址】 
基本数据类型比较:自然数值。
 引用:比较的也是值,只不过不是数值,是变量本身的值(这个值是内存地址)
        比如:String str="abc";str应用的值,是内存个地址。指向的对象的值
        是"abc"
       
equal用于比较两个对象的值是否相同【不是比地址】 ,比较的前提,两个比较对象的类型要一样,然后再比较值。
如果类型不一样,返回肯定是false。
Object
public boolean equals(Object obj) {
        return (this == obj);
    }
          其他类型:xx
    public boolean equals(Object obj) {
        if (obj instanceof xx) {
            return value == ((xx)obj).byteValue();
        }
        return false;
    }
【特别注意】Object类中的equals方法和“==”是一样的,没有区别,而String类,
Integer类等等一些类,是重写了equals方法,才使得equals和“==不同”,所以,
当自己创建类时,自动继承了Object的equals方法,要想实现不同的等于比较,必须重写equals方法。

 *
 */
public class EqualsTest {
public static void main(String[] args) {
Byte a = 1;
Byte b = new Byte("1");
Byte c = 0x1;
System.out.println("a.equals(1):"+a.equals(1));
System.out.println("a==1:"+(a==1));
System.out.println("a.equals(b):"+a.equals(b));
System.out.println("a==b:"+(a==b));
System.out.println("c.equals(1):"+c.equals(1));
System.out.println("c==1:"+(c==1));
System.out.println("======================");
Integer i = 1;
System.out.println("i.equals(1):"+i.equals(1));
System.out.println("i==1:"+(i==1));
//==============================================
//对于基本类型的变量。"=="和"equal"的区别 
   //“==”对于基本数据类型,判断两个变量的值是否相等。 
   //“equal”不能用于基本数据类型。只能用于类变量。对于基本数据类型要用其包装类。 
   //对于对象变量,"=="和"equal"的区别 
System.out.println("======================");
   String st1="you "; 
   String st2="are super man"; 
   String st3="you are super man"; 
   String st4="you are super man"; 
   Boolean b1=(st1==st2); 
   Boolean b2=(st1+st2)==st3; 
   Boolean b3=(st3==st4); 
   System.out.println("st1==st2:"+b1+"-----(st1+st2)==st3:"+b2+"-----st3==st4:"+b3); 


  //因为对象变量的存储的是对象在内存中的路径,即内存地址。所以用“==”比较时,即使 
  //对象的值相等,但是他们的内存地址不同,所以==的结果为false。故“==”用于比较两 
  //个变量的值是否相等,而不是变量引用的对象是否相等 
   Boolean r1=st1.equals(st2); 
   Boolean r2=(st1+st2).equals(st3); 
   Boolean r3=st3.equals(st4); 
   System.out.println("st1.equals(st2):"+r1+"-----(st1+st2).equals(st3):"+r2+"-----st3.equals(st4):"+r3); 


   //equal用于比较两个对象是否相同。 
}
}
原创粉丝点击