zoukankan      html  css  js  c++  java
  • 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方法和重写

     

     

     

  • 相关阅读:
    神奇玻璃制品:鲁珀特之泪
    ReCaptcha——基于验证码的数据挖掘
    GCC 编译使用动态链接库和静态链接库
    转:Android View.post(Runnable )
    两个adb命令使用的问题
    转:android menu 实现动态修改menu
    Android Dialog自定义
    转:ActivityGroup + GridView 实现Tab分页标签
    TabHost与ActivityGroup整理
    转:Android之Tab分页标签的实现方法一TabActivity和TabHost的结合
  • 原文地址:https://www.cnblogs.com/LihanyangQAQ/p/11234980.html
Copyright © 2011-2022 走看看