java.lang.Object类
* 1.Object类时所有java类的根父类
* 2.如果在类的声明中未使用extends关键字指明父类,则默认父类为java.lang.Object类
* 3.Object类中的功能(属性、方法)就具有通用性。
* 4.Object类只声明了一个空参构造器
*
*
* 5.方法
* equals() toString() getClass() hashCode() clone() finalize()
*
* wait() notify() notifyAll()
*
*
*
* 一、== equals
* ==
* ①可以使用在基本数据类型变量和引用数据类型变量中
* ②如果比较的是基本数据类型变量,比较两个变量保存的数据是否相等,(不一定类型要相同)
* 如果比较的是引用数据类型变量,比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体
*
* equals()
* 1.是一个方法,而非运算符
* 2.只能适用于引用数据类型
* ①Object类中equals的定义和==作用相同
* ②像String、Date、File、包装类都重写了equals()方法,重写以后,比较两个对象内容是否相同
*
* 通常情况下,我们自定义类如果使用equals()的话,也通常是比较两个对象的“实体内容”是否相同,那么,
* 我们就要对Object类中的equals()进行重写
*重写规则:比较两个对象实体内容是否相同
*
*
* 二.toString()
toString()
* 1.当我们输出一个对象的引用时,实际上就是调用了当前对象的toString()方法
*
* 2.Object中的toString()
* `public String toString() {
* return getClass().getName() + "@" + Integer.toHexString(hashCode());
* }
* 3.像String、Date、File、包装类等都重写了Object类中的toString()方法。
*
* 4.自定义类重写toString()方法
public class ObjectTest {
@Test
public void test1()
{
// System.out.println(10==10);//true
//
// System.out.println(10==10.0);//true
//
//
// String str1=new String("orz");
// String str2=new String("orz");
// System.out.println(str1==str2);//false
//
// System.out.println(str1.equals(str2));//true
Person p1=new Person(1,"tom");
Person p2=new Person(1,"tom");
System.out.println(p1.equals(p2));
}
}
class Person{
int age;
String name;
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public Person() {
}
//
//手动重写
// @Override
// public boolean equals(Object obj) {
// if (this == obj) {
// return true;
// }
// if(obj instanceof Person)
// {
// Person person=(Person)obj;
// //比较每个属性是否都相同
// return this.age==person.age &&this.name.equals(person.name);
// }
// else
// {
// return false;
// }
// }
//自动生成
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
}
public class ToStringTest {
public static void main(String[] args) {
Customer customer=new Customer();
customer.age=11;
customer.name="Tom";
System.out.println(customer);
}
}
class Customer{
int age;
String name;
//自动生成toString()
@Override
public String toString() {
return "Customer{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
}