- Object 属于java.lang 不用导包
1 instanceof
instanceof 运算符的前一个操作数是一个引用变量,后一个操作数通常是一个类(可以是接口),用于判断前面的对象是否是后面的类,或者其子类、实现类的实例。如果是返回true,否则返回false。
1 | interface A{ |
2 toString
- 默认打印的是对象的地址值
- 可以不写,直接打印对象就默认调用了该方法
3 equals
- 源码如下
1 | public boolean equals(object obj) { |
八种基本数据类型比较的是值,Object是引用对象堆内存的地址
如果直接使用八种基本数据类型的equals方法,比较空值时会报空指针异常,但是调用Object.equals(a,b)就不会
StringBuffer使用的是Object中的方法,没重写
1
2
3public 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
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 ;

