Object祖先类:
祖先类,对象相同的属性方法。
基本配置、对象的基本配置,只要是类就是object的子类
统一的相同方法、所有类都可以继承它、任何对象都是可以转换成它。
统一配置类、统一规划类、后期在进行编写、统一了所有对象所有相同的方法。
boolean、equals(object)对象和对象之间比较由自己开发、比较的是地址
如果自己写、用原有的equals比较的不是对象的地址比的是字符串、如果不是一个地址相同的字符串,也会是true。
object是所有创建类的父类、父类可以转换成子类
public boolean equals(Object obj) {//这是我们写的
if (this == obj) {//请问您是不是一个类
return true;
}
//请问 obj 对象 是不是Student 创建的实例
if(obj instanceof Student){//因为祖先类是所有类的模板、只要创建类就会加载祖先类
Student student=(Student)obj;//将传进来的模板转成Student
if(this.age==student.age &&
(this.name==student.name||this.name.equals(student.name)) &&
(this.sex==student.sex||this.sex.equals(student.sex)) &&
(this.address==student.address||this.address.equals(student.address))
){
return true;
}
}
return false;
}
——————————————————————————————————————————————————————
@Override
public boolean equals(Object o) {//这是idea生成的
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
if (age != student.age) return false;
if (name != null ? !name.equals(student.name) : student.name != null) return false;
if (sex != null ? !sex.equals(student.sex) : student.sex != null) return false;
return address != null ? address.equals(student.address) : student.address == null;
}
int hashcode()方法 返回的值是int类型的
通过算法给出两个唯一值。
但这两个值不一定一致(几率很小)
但内容一致两个值绝对相同
因为他是那数值做的比较
对象变量之间赋值,只是给地址赋值
处基本数据类型、操作的都是地址
相同的类、不同对象
唯一不同的就是属性值
复制:
复制复制在类里面复制比较彻底,私有方法也可以复制
外界类无法访问本地类的私有属性
浅克隆,类中有一个对象引用别的对象的,给自己的属性。
但它克隆不会再克隆引用的对象,它只会克隆当前类中属性、再引用类中别引用的对象(被克隆引用的方法或属性)
public class T4 {
String name;
int age;
String NianLing;
protected Object clone() throws CloneNotSupportedException {
T4 t4 = new T4();
t4.name = name;
t4.age = age;
t4.NianLing = NianLing;
return t4;
}
public static void main(String[] args) throws CloneNotSupportedException {
T4 t4 = new T4();
t4.NianLing = "哈哈";
t4.age=12;
t4.name="小敏";
T4 t41=(T4)t4.clone();//这里的T4指的是将克隆的t4转换成T4
}
}
boolean equals(Object):
对象和对象之间的比较,由自己开发
int hashCode():
switch ?? 为什么能支持字符串呢?
code值不一样 对象数据肯定不同 一样的code不一定是一样的内容
code是一个int数值,以后我们可以使用此数组定位置,或者做个快速搜索
Object clone():
克隆 对象
浅克隆
深克隆
对象变量之间赋值 只是地址的给值
finalize():
垃圾回收提醒方法
只要没用引用的对象 就会回收掉,但是回收不是立即调用
System.gc() 促进它回收
getClass():
反射机制学习 得到 Class 对象
notify():
线程才能学习得到
notifyAll()
wait():
线程才能学习得到
wait(long)
wait(long, int)