Q1:类和对象
类(class)和对象(object)是两种以计算机为载体的计算机语言的合称。
对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型。
它们的关系是,对象是类的实例,类是对象的模板。对象是通过new classname产生的,用来调用类的方法;类的构造方法
Q2:Object三个重要的方法
Object:Java中所有的类都有一个公共的父类就是Object类,一个类只要没有明显的继承一个类,则肯定是Object的子类。
三个重要的方法toString,equals,hashCode
toString:
equals:用于对象的比较
Object默认的是地址比较,因此我们自己创建类时重写一下equals方法,
==对比的是地址,
String str = “dsf”;
String str1 = new String(“dfs”);
先判断长度是否相等,若等就一个一个对比,都相等就是true,否则为假
Syste.out.println(str.equals(str1));
1
2
3
4
hashCode:这一个类所产生的对象所具有的标识叫做哈希码
地址一样哈希码一样,地址不一样哈希码有可能相同
哈希算法:任何实现了不可逆的算法都是哈希算法
哈希不可逆能标识可重复
public class ObservObject {
public ObservObject(int age, int height) {
this.age = age;
this.height = height;
}
}
public int hashCode() {
int code = 1;
code = (code + this.height*31)*code+31;
code = (code + this.age*31)*code+31;
return code;
}
public class Main {
public static void main(String[] args) {
ObservObject observObject = new ObservObject(3,4);
ObservObject oo = new ObservObject(3,4);
System.out.println(oo);
System.out.println(observObject);
//下面是输出结果,@后面是hashCode值
//ObservObject@97db
//ObservObject@97db
}
}