操作符==与对象的equals()方法

一、 操作符“==”

    用来比较两个操作元是否相等,这两个操作元可以是基本类型,也可以是引用类型。

    当操作元是引用类型变量时,这两个引用变量必须都引用同一个对象,结果才为true。

Integer int1 = new Integer(1);
Integer int2 = new Integer(1);
Integer int 3 = int1;     //int3和int1引用同一个对象

int[] arr1 = new int[1];
int[] arr2 = new int[1];
int[] arr3 = arr1;       //arr3和arr1引用同一个对象

System.out.println(int1==int2);  //结果为false
System.out.println(int1==int3);   //结果为true

System.out.println(arr1==arr2);    //结果为false
System.out.println(arr1==arr3);   //结果为true

     注意:当用于比较引用类型变量时,“==”两边的变量被显示声明的类型必须是同种类型或有继承关系,即位于继承树的同一个继承分支上,否则编译报错。

    例如:有三个类,Person类为父类,Student类、Teacher类都直接继承Person类。

Student s = new Student();
Teacher t = new Teacher();
System.out.println(s==t);

 编译出错。

Person s = new Student();
Person t = new Teacher();
System.out.println(s==t); 

 由于声明类型相同,所以编译通过,但运行时类型却不同,执行时出错。

 

二、 对象的equals()方法

    equals()方法是在Object类中定义的方法,我们先看下源代码:

public boolean equals(Object obj) {
    if(this==obj)  return true;
    else return false;
}

 可以看出和操作符“==”的用法是一样的:当参数obj引用的对象与当前对象为同一个对象时,就返回true,否则返回false

 

但JDK中有一些类覆盖了Object的equals()方法:如果两个对象的类型一致,并且内容一致,则返回true。

这些类包括:java.io.File 、java.util.Date 、java.lang.String 、包装类(如java.lang.Integer 、java.lang.Double等)

Integer int1 = new Integer(1);
Integer int2 = new Integer(1);

String str1 = new String("Hello");
String str2 = new String("Hello");

System.out.println(int1==int2);   //打印false
System.out.println(int1.equals(int2));   //打印true

System.out.println(str1==str2);    //打印false
System.out.println(str1.equals(str2));  //打印true

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值