API
API---Application Programming Interface(提供一系列的接口以及接口下的类)
API里提供的所有方法要么被protected修饰要么就是不写(public)
Object
1.概念
Object类是java的顶级父类,每个类默认继承Object类。
class A extends B{} class B extends Object{}
没有违背类的单一继承原则
2.重要方法
1.clone():把原对象的熟悉值赋值到新对象中并且把新对象进行返回
类实现Cloneable接口产生对象才能支持克隆操作
public class ObjectDemo implements Cloneable{
int i=1;
public static void main(String[] args) throws CloneNotSupportedException {
//创建对象
ObjectDemo ob=new ObjectDemo();
//调用父类Object类里clone方法
//CloneNotSupportedException--克隆不支持异常
ObjectDemo ob1=(ObjectDemo) ob.clone();
//克隆对象属性值和原对象的属性值一致
//System.out.println(ob1.i);
//false把原对象的属性值赋值到新对象中
System.out.println(ob==ob1);
}
}
2.finalize():通知系统进行垃圾回收
3.getClass():返回的Object的实际创建类的类型(包名+类名)
//创建对象
ObjectDemo ob=new ObjectDemo();
Object ob1=new ObjectDemo();
//包名+类名
System.out.println(ob.getClass());
//Object的实际创建类类型
System.out.println(ob1.getClass());
4.hashcode():返回对象的哈希码值
哈希码值(1.取值范围广(41亿左右)、2.散列分布(均匀分布)--不会出现重复)
//不同对象的哈希码值不一样
//哈希码值是不会重复---内存地址值要唯一---用哈希码值代表地址值
System.out.println(newObject().hashCode());
//把十进制转成十六进制
System.out.println(Integer.toHexString(newObject().hashCode()));
5.toString():拼接对象地址值
为了获取的是对象的属性值需要重写toString()
public class ObjectDemo3 {
public static void main(String[] args) {
//创建对象
/*ObjectDemo3 od=new ObjectDemo3();
//od对象传入到底层valueOf()中要去调用Object类里toString()
//Object类里的toString方法默认给对象来拼接地址值
System.out.println(od);
//od对象直接调用Object类里toString()来拼接地址值
System.out.println(od.toString());*/
//
Person p=new Person();
p.name="豆豆";
p.age=10;
p.gender='男';
//调用Person类重写toString方法来输出对象属性值
System.out.println(p);
}
}
//
class Person{
String name;
char gender;
int age;
//重写Object类里toString方法,为了获取对象的属性值
//Ctrl+O---展示出可以重写的方法
/* @Override
public String toString() {
return this.name+","+this.gender+","+this.age;
}*/
//java自动生成
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", gender=" + gender +
", age=" + age +
'}';
}
}
6.equals():根据对象地址值来判断对象是否相等
为了更加全面的来判断对象是否相等,根据对象地址值以及对象 属性来综合判断。需要重写equals方法(1.对象地址值2.参数对象是否为null 3.两个对象属性4.比较属性值)
public class Test {
public static void main(String[] args) {
}
}
class Teacher{
//属性
String name;
int age;
char gender;
String dept;
//重写equals方法
public boolean equals(Object obj){
//1.判断地址值是否相等
if(this==obj){
return true;
}
//2.判断参数对象是否为null
if(obj!=null){
return false;
}
//3.判断两个对象类型是否一致
if(this.getClass()!=obj.getClass()){
return false;
}
//强转
Teacher t=(Teacher) obj;
//4.比较属性
//比较两个对象年龄
if(this.age!=t.age){
return false;
}
//比较两个对象性别
if(this.gender!=t.gender){
return false;
}
//比较两个对象的名称是否一致
if(this.name==t.name||this.name!=null&&this.equals(t.name)){
return false;
}
//比较两个对象部门是否一致
if(this.dept==t.dept||this.dept!=null&&this.equals(t.dept)){
return true;
}
//
return false;
}
}