API接口方法查询
    1.查API手册
    2.连点2下Shift打开Idea搜索,勾选”include non-project item” ,搜Object
    3.在扩展库Extermal libraries找到jdk1.8,
    4.按住Ctrl点hashCode
    Object的常用方法:
    1. toString()
    Object中默认实现:打印对象的 地址值
    Student中重写后:打印对象的 类型+属性名+属性值

    1. //测试toString() 打印地址值
    2. //打印s对象的是println(),这个方法会层层调用,一直到Object中的toString()
    3. //return getClass().getName() + "@" + Integer.toHexString(hashCode());
    4. /**
    5. * Object中toString()方法的默认实现:对象的地址值 [对象类型@十六进制的哈希码值]
    6. * 子类重写toString()后,打印的是:对象的类型+属性+属性值
    7. */

    2.equals()
    Object中默认实现:== 比较,比较的是引用类型变量保存的 地址值
    Student中重写后:比较的就是对象的 类型+属性+属性值

    1. //测试equals()
    2. /**
    3. * Object中的equals()的默认实现使用的是 == 比较
    4. * == 比较的是左右两边的值,如果是基本类型,比较的就是 字面值
    5. * 如果是引用类型,比较的是引用类型变量保存的 地址值
    6. * 子类重写了equals()与hashCode()后,比较的就是对象的 类型+属性+属性值
    7. */
    8. System.out.println(s1.equals(s2));//s1.hashCode == s2.hashCode

    3.hashCode()
    Object默认实现:hashCode()的哈希码值根据地址生成
    Student重写后:hashCode()的哈希码值根据重写后传入对象的属性生成
    4.hashCode()与equals()
    equals()与hashCode()逻辑要保持一致,要重写都重写,不重写都不重写

    1. /*equals()与hashCode()逻辑要保持一致,要重写都重写,不重写都不重写
    2. * Object默认实现:
    3. * hashCode()的哈希码值根据地址生成
    4. * equals()底层使用==比较两个对象的地址值
    5. * Student重写后:
    6. * hashCode()的哈希码值根据重写后传入对象的属性生成
    7. * equals()比较两个对象的类型+所有属性与属性值*/

    5.String类中的equals()与hashCode()

    1. /**
    2. * Object类中equals()的默认实现是通过 == 比较
    3. * 但是,String类已经重写过了继承自Object中的equals()
    4. * 重写后,不再按照==比较,而是比较两个字符串的具体内容
    5. * 也就是说,不论创建方式,只要串的内容一致,equals()就返回true
    6. */
    7. /**
    8. * String重写了hashCode(),是根据字符串的内容生成哈希码值,而不是根据地址值生成
    9. * so,虽然s1与s2的地址值不同,但是他们的哈希码值一样
    10. */
    11. //String也重写了Object中的toString(),打印的是字符串的具体内容

    6.String API总结

    1. String API总结
    2. int hashCode() 返回此字符串的哈希码。
    3. boolean equals(Object anObject) 将此字符串与指定的对象比较,比较的是重写后的串的具体内容
    4. String toString() 返回此对象本身(它已经是一个字符串!)。
    5. int length() 返回此字符串的长度。
    6. String toUpperCase() 所有字符都转换为大写。
    7. String toLowerCase() 所有字符都转换为小写
    8. boolean startsWith(String prefix) 测试此字符串是否以指定的元素开头。
    9. boolean endsWith(String suffix) 测试此字符串是否以指定的字符串结束。
    10. char charAt(int index) 返回指定索引/下标处的 char 值/字符
    11. int indexOf(String str) 返回指定字符在此字符串中第一次出现处的索引。
    12. int lastIndexOf(String str) 返回指定字符在此字符串中最后一次出现处的索引。
    13. String concat(String str) 将指定字符串连接/拼接到此字符串的结尾,注意:不会改变原串
    14. String[] split(String regex) 根据给定元素来分隔此字符串。
    15. String trim() 返回去除首尾空格的字符串
    16. byte[] getBytes() 把字符串存储到一个新的 byte 数组中
    17. String substring(int beginIndex) 返回一个新子串,从指定下标处开始,包含指定下标
    18. String substring(int beginIndex, int endIndex) 返回一个新子串,从执定下标开始,到结束下标为止,但不包含结束下标
    19. static String valueOf(int i) int转成String