IDEA 自动补齐常用方法快捷键 fn+Alt+insert
简介
Object是Java中所有类的父类、超类、基类,位于继承树的最顶层。
可以说,任何一个没有显式地继承别的父类的类,都会直接继承Object,否则就是间接地继承Object,并且任何一个类也都会享有Object提供的方法。
因为Object是所有类的父类,所以基于多态的特性,该类可以用来代表任何一个类,允许把任何类型的对象赋给 Object类型的变量,也可以作为方法的参数、方法的返回值。
常用方法
equals
源码:
- equals 比较的是对象的地址 使用的是 == 比较方式
class Pig{
}
class Demo{
public static void main(String[] args){
Pig p1 = new Pig();
Pig p2 = new Pig();
boolean b = p1.equals(p2);
Ststem.out.println(b);
}
}
- 可以使用equals是用来比较两个对象是否相同(不是地址值的相同,是两个对象的属性是否完全一致)
- equals不能和null进行比较
class Pig{
private String name;
private int age;
private String name;
public Pig(){}
public Pig(String name,int age){
this.name = name;
this.age = age;
}
public boolean equals(Object obj){
if(obj == null){
return false;
}
// instanceof:判断obj对象的真实数据类型是不是Pig
if(!(obj instanceof Pig)){
return false;
}
// Object object = p2 = new Pig();
Pig p = (Pig)obj;
return this.age = p.age && this.name.equals(p.name);
}
//way-2
//public boolean equals(Object obj){
// if(this == obj) return true;
// if(obj == null) return false;
// if(this.getClass() != obj.getClass()) reutrn false;
//
// Pig other = (Pig)obj;
// if(age != other.age) return false;
// if(name == null){
// if(other.name != null) return false;
// }else if(!name.equals(other.name)){
// returen false;
// }
// return true;
//}
}
class Demo{
public static void main(String[] args){
Pig p1 = new Pig('tom',18);
Pig p2 = new Pig('jerry',20);
boolean b = p1.equals(p2);
Ststem.out.println(b);
}
}
toString
源码:
- getClass().getName() —— 获取类的包名+对象在内存中的地址
- Integer.toHexString(hashCode()) —— 获取哈希Code值
- 返回值是一个字符串
在OBject类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串)。
如果我们在代码里直接输出一个对象,你会发现它输出的这个对象在内存中的地址,我们把它称为哈希码,它是通过哈希算法生成的一个字符串,是用来唯一区分对象的,可以想象为身份证号。
public Demo{
public static void main(String[] args){
Dog dog = new Dog();
System.out.println(dog);
System.out.println(dog.toString());
}
}
结果: