• Object类和包装类


    11.1  Object类

    11.1.1  Object类介绍

    Object对象是除了基础类型之外,所有的对象都需要继承的父对象,包括数组也继承了Object。

    11.1.2  Object类常见方法

    • public native int hashCode();

      作用:返回对象的哈希码

    • public boolean equals(Object obj);

      作用:用于比较

    11.1.3  ==号与equals方法比较及equals方法重写

    1. ==号

      如果作用于基本数据类型变量,直接比较值;

      如果作用于引用类型的变量,比较的是所指向的对象的地址;

    2. equals方法

      如果没有对equals方法进行重写,比较的是所指向的对象的地址;

      如果已经对equals方法进行了重写,就按重写的逻辑进行处理;

      注意事项:equals方法不能用于比较基本数据类型变量

    11.1.4  hashcode方法和重写

    1. HashCode概要

      如果两个对象相同,equals一定返回true,且两个对象的HashCode一定相同;

      如果两个对象的HashCode相同,两个对象不一定相同,即equals()的值不一定为true,只能表明这两个对象在一个散列存储结构中;

    2. HashCode作用

      • 提高了读取对象的效率

      从Object角度看,JVM【Java虚拟机】new一个Object,它都会将这个Object丢到一个Hash表中去,下次做Object的比较或者取这个对象的时候【读取操作】,它会根据对象的HashCode再从Hash表中取这个对象。这样做的目的是提高读取对象的效率。若HashCode相同再去调用equals。

      • hashSet等存储数据的依据

      hashCode是一个标识,到散列表中去找该对象的一个标识,如果相同的hashCode的类放于相同的散列表中,然后在通过equals进一步选出散列表中对应的对象。因此相同标识下的类不能重复

    11.1.5  Object类的其它方法应用

    public native int hashCode();
    public boolean equals(Object obj);
    protected native Object clone();
    public String toString();
    public final native void notify();
    public final native void notifyAll();
    public final native void wait(long timeout) throws InterruptedException;
    public final void wait(long timeout, int nanos) throws InterruptedException;
    protected void finalize() throws Throwable;

     

    11.2  包装类及其使用

    11.2.1  什么是包装类

    为了支持Java语言面向对象的特性,基本数据类型中的每一个在java.lang包中都有一个对应的包装类,即将每个基本类型都包装成了一个类。

    基本类型包装类
    byte java.lang.Byte
    short java.lang.Short
    int java.lang.Integer
    long java.lang.Long
    float java.lang.Float
    double java.lang.Double
    char java.lang.Character
    boolean java.lang.Boolean

    11.2.2  包装类和基本类型的转换

    1. 基础类型转换成包装类【又称为装箱操作,装箱又分为手动装箱和自动装箱】

      int a=1;//定义int类型变量
      Integer b=new Integer(a);//手动装箱
      Integer d=Integer.valueOf(a);//手动装箱
      Integer c=a;//自动装箱

    2. 包装类转换成基础类型【又称为拆箱操作,拆箱又分为手动拆箱和自动拆箱】

      Integer x=new Integer(100);//定义Integer类型的包装类对象
         int y=x.intValue();//手动拆箱
         int z=x;//自动拆箱

         system.out.println(x+z);  //Integer x变为int x

    11.2.3  包装类的作用

    • 包含了每种基本数据类型的相关属性,如最大值、最小值等;

    • 集合不允许存放基本数据类型,只允许存放对象类,故常用包装类;

    • 作为基本数据类型对应的类类型,提供了一系列实用的对象操作,如类型转换、进制转换等;

     

     

    面试要点:==和equals()

    口述hascode方法和重写

     

     

     

  • 相关阅读:
    use paramiko to connect remote server and execute command
    protect golang source code
    adjust jedi vim to python2 and python3
    install vim plugin local file offline
    add swap file if you only have 1G RAM
    datatables hyperlink in td
    django rest framework custom json format
    【JAVA基础】网络编程
    【JAVA基础】多线程
    【JAVA基础】String类的概述和使用
  • 原文地址:https://www.cnblogs.com/LihanyangQAQ/p/11234980.html
Copyright © 2020-2023  润新知