Object API

--1,API
Application Programming Interface应用编程接口,一切可以调用的东西都是API。
--2,概述
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。
--3,创建对象
Object() 
--4,常用方法
--int hashCode() 
返回该对象的哈希码值。 
--String toString() 
返回该对象的字符串表示。 
--boolean equals(Object obj) 
指示其他某个对象是否与此对象“相等”。
package cn.tedu.api;
//测试 Object工具类
public class Test6_Object {
public static void main(String[] args) {
//1, 创建对象
Object o = new Object() ;
//2, 调用方法
//返回该对象在内存中的哈希码值 -- 1704856573
System.out.println( o.hashCode() );
//返回该对象在内存中的地址值 -- java.lang.Object@659e0bfd
System.out.println( o.toString() );
// boolean equals(Object obj)
System.out.println( o.equals("abc") );//判断两个对象是否相等

//TODO

}

}

//测试 Object工具类
//总结 :
//1, 什么时候要重写Object提供的toString()
//--想要查看属性值而不是地址值时
//2, 什么时候要重写Object提供的equals()
//--想要比较对象间的属性值而不是地址值时
public class C9 {
public static void main(String[] args) {
//TODO sout 自动补齐打印的
//测试方式 : ctrl shift f10 / 右键直接run
Student s = new Student("渣渣辉",20);
Student s2 = new Student("渣渣辉",20);

//2.1, 现在的比较s和s2不相等 ? -- 默认使用了Object的equals()
//2.2, Object的equals()默认使用了==比较两个引用类型存着的地址值
//==比较基本类型时,比值本身...比引用类型时,比地址值
//2.3, 想让equals()比较时不比地址值,而是 比属性值 -- 重写equals()
// 如果属性都一样,就让equals()相等,结果返回true
System.out.println( s.equals(s2) );//false

System.out.println( s );
//1.3, 现在展示的是地址值 -> 想 查看属性的值
//1.4, 默认调用了Object的toString() -> 展示地址值:cn.tedu.api.Student@28d93b30
//1.5, 想改就,继承Object重写toString() -> 展示属性值: Student{name='渣渣辉', age=20}
}
}
class Student {
//TODO generate...constructor--按着ctrl多选
public Student() { }
public Student(String name, int age) {
this.name = name;
this.age = age;
}
String name ;
int age ;
//1.1, 如果想要看对象的属性值就重写toString(),如果想看对象的地址值不用重写
//1.2, 右键generate...--toString()--ok
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
//2.4, 默认使用了Object提供的equals()是比较两个对象间的地址值而不是属性值
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
//统一类型,也是学生类型才参与比较--向下转型/向下造型--可以使用子类的特有功能
Student student = (Student) o;
//只要name属性一样,age属性也一样就返回true,表示两个对象是相同相等的
return age == student.age &&
Objects.equals(name, student.name);
}

}
posted @ 2020-10-19 23:38  Liang-shi  阅读(147)  评论(0)    收藏  举报