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:这一个类所产生的对象所具有的标识叫做哈希码

地址一样哈希码一样,地址不一样哈希码有可能相同

哈希算法:任何实现了不可逆的算法都是哈希算法

哈希不可逆能标识可重复

  1. public class ObservObject {
  2. public ObservObject(int age, int height) {
  3. this.age = age;
  4. this.height = height;
  5. }
  6. }
  7. public int hashCode() {
  8. int code = 1;
  9. code = (code + this.height*31)*code+31;
  10. code = (code + this.age*31)*code+31;
  11. return code;
  12. }
  13. public class Main {
  14. public static void main(String[] args) {
  15. ObservObject observObject = new ObservObject(3,4);
  16. ObservObject oo = new ObservObject(3,4);
  17. System.out.println(oo);
  18. System.out.println(observObject);
  19. //下面是输出结果,@后面是hashCode值
  20. //ObservObject@97db
  21. //ObservObject@97db
  22. }
  23. }