目录
  1. 1. 1 instanceof
  2. 2. 2 toString
  3. 3. 3 equals
Object
  • Object 属于java.lang 不用导包

1 instanceof

instanceof 运算符的前一个操作数是一个引用变量,后一个操作数通常是一个(可以是接口),用于判断前面的对象是否是后面的类,或者其子类、实现类的实例。如果是返回true,否则返回false。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
interface A{
void say();
}
class B implements A{
public void say()
{
System.out.println("B实现的say()方法");
}
}
class C implements A{
public void say()
{
System.out.println("C实现的say()方法");
}
}

public class TestDemo{
public static void main(String[] args) {
A a= new B(); //接口不能new
C c = new C();
System.out.println(a instanceof B); //true;发生了A a= new B();
System.out.println(c instanceof C); //true;自己是自己的实例
}
}

2 toString

  • 默认打印的是对象的地址值
  • 可以不写,直接打印对象就默认调用了该方法

3 equals

  • 源码如下
1
2
public boolean equals(object obj) {
return ( this == obj);
  • 八种基本数据类型比较的是值,Object是引用对象堆内存的地址

  • 如果直接使用八种基本数据类型的equals方法,比较空值时会报空指针异常,但是调用Object.equals(a,b)就不会

  • StringBuffer使用的是Object中的方法,没重写

    1
    2
    3
    public static boolean equals(object a, object b) {
    return (a == b) 11 (a != null && a.equals(b));
    }
  • 可以添加一些常用判断条件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    @Override
    public boolean equals(object obj){

    //增加一个判断,传递的参数bj如果是this本身,直接返回true,提高程序的效率
    if(obj==this){
    return true;
    }
    //增加一个判断,传递的参数obj如果是null,直接返回false,提高程序的效率
    if(obj==null){
    return false;
    }
    //增加一个判断,防止类型转换异常ClassCastException
    if(obj instanceof Person){
    //使用向下转型,把obj转换为Person类型,不然子类方法丢失
    Person p = (Person)obj;
    //比较两个对象的属性,一个对象是this(p1),另一个对象是p(obj->p2)
    boolean b = this . name. equals(p.name) && this. age==p. age;
    return b ;
文章作者: liuDH
文章链接: http://yoursite.com/2020/03/13/Object/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 毛毛裤裤的世界
打赏
  • 微信
  • 支付寶