Java中超类Object和一些常见的接口和类

主要是Object类中的一些总结和介绍,作为一个基础知识点

Object

-Object 首字母大写
01.所有类的超类,
02.一个类没有使用extend关键字明确标明继承关系,则默认继承object类
03. JAVA中的每一个类都可以使用object类中定义的方法
设计其主要目标之一是为了扩展--
     final修饰方法表示该方法不允许被子类重写
     非final方法设计成被覆盖的,在覆盖这些方法时需要遵守一些约定

Object的方法

其方法分为非final方法和final方法
    final方法 类和 线程
        getClass()     public final native Class<?> getClass()              
        notify()        public final native void notify();
        notifyAll()     public final native void notifyAll();
        wait()          public final void wait() throws InterruptedException {
                        public final void wait(long timeout, int nanos) throws InterruptedException 
                        public final native void wait(long timeout) throws InterruptedException
    final方法    
            hashCode()  public native int hashCode();
            equals()    public boolean equals(Object obj) { return (this == obj);}
            toString()  public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode());}
    按照public 以及protected 复制和垃圾回收
            protected native Object clone() throws CloneNotSupportedException;
            protected void finalize() throws Throwable { }
    getClass() 方法返回对象所属的类,是一个 Class 对象。通过 Class 对象可以获取该类的各种信息,包括类名、父类以及它所实现接口的名字等
    方法  说明       
    Class getClass()    返回一个对象运行时的实例类
    void notify()       激活等待在该对象的监视器上的一个线程
    void notifyAll()    激活等待在该对象的监视器上的全部线程
    int hashCode()      返回该对象的散列码值
    boolean equals(Object)  比较两对象是否相等-  equals() 方法用于对象与对象之间的比较
    String toString()   返回该对象的字符串表示
    void wait()         在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待
    Object clone()      创建与该对象的类相同的新对象
    void finalize()     当垃圾回收器确定不存在对该对象的更多引用时,对象的圾回收器调用该方法
关于继承后的覆盖
覆盖equals @override  和不覆盖equals
    equals 自反性-对象必须等于自身
                   对称性- 任何两个对象对于 是否相等 的问题必须保持一致
                   传递性--以及一致性--非空性
                使用方法:使用 == 检查参数引用是否为这个对象的引用
                        使用 instanceof 检查参数是否为正确的类型
                        检查关键域
                        要覆盖hashCode
    覆盖hashCode --equals 中的一致性 
            相等的对象必须具有相等的hash code 散列值
    toString()  -返回包含访问的信息

修饰类和修饰方法

final 关键字  修饰类-修饰方法-修饰变量
public/project
native 关键字告诉JVM调用的是该方法在外部定义
    使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,
    并且被编译成了DLL,由java去调用
方法-有返回值和没有返回值-有返回值类型没有返回值类型
        没有返回值:
            01.一个方法不需要返回值时可以使用void关键字
            02.不使用返回值类型-- 构造方法
    01.修饰类以及方法
    public/project --使用权限-作用域的限制--变量或者方法的作用域
            作用域     类内部     本包                  子类          外部包 
            作用域     当前类     同一package       子孙类     其他package 
            public          √          √                    √            √ 
            protected       √         √                 √            × 
            friendly            √         √                  ×            × 
            private         √         ×                 ×             × 
            不写时默认为friendly ,也即是“包访问权限”。
    02.final --和继承-重写-改变有关
        final修饰
            Class  类表示不允许被继承
        修饰方法-- 重写(Override)   重载(Overload)和  重写(Override)
            final修饰的方法可以被继承  表示该方法不允许被子类重写 
            不能修饰构造方法
        修饰变量表示不允许修改 
                方法内部的局部变量 => 在使用之前被初始化赋值即可
                            类中成员变量 => 只能在定义和构造代码块,构造方法中进行初始化设置
                基本数据类型的变量 => 赋值后不允许被修改
                引用数据类型的变量 => 初始化后不能再指向另一个对象,但是对象的内容可以改变
    03.static 初始化相关内容
        1)static方法
        2)static变量   static是不允许用来修饰局部变量
        3)static代码块
        方便在没有创建对象的情况下来进行调用(方法/变量)
    Java编译阶段:类变量的初始化-实例变量的初始化
        编译时类型和运行时类型
        编译器先执行了类成员数据的初始化过程(静态的和非静态的都是)。然后再执行对象的构造器
    Java虚拟机通过装载、连接(验证、准备、解析)、初始化来使得一个Java类型可以被Java程序所使用

一些接口和类

01. Comparable 接口  Comparator 接口
    Comparable 接口  java.lang
        public interface Comparable<T>  { public int compareTo(T o);}
        只有一个方法compare,
        比较此对象与指定对象的顺序,
        返回值是int,有三种情况 如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数
    Comparator 接口
        public interface Comparator<T>{  int compare(T o1, T o2); boolean equals(Object obj); }
    区别:
        Comparable 是排序接口,若一个类实现了Comparable接口,就意味着“该类支持排序”
                这些类是可以和自己比较
        Comparator 是比较器,我们若需要控制某个类的次序
          Comparable 接口位于 java.lang包下, Comparator 接口位于java.util包下。
        Comparator 接口   compare
            包含compare()和equals()两个方法
        Comparable 接口 compareTo
            只包含一个compareTo()方法,给两个对象排序 返回值  
                e1.compareTo(e2) > 0 即 e1 > e2
                e1.compareTo(e2) = 0 即 e1 = e2
                e1.compareTo(e2) < 0 即 e1 < e2
02.Iterable 接口和 Iterator 接口
    Iterable 接口 java.lang.Iterable  
            public interface Iterable{ java.util.Iterator iterator();}
            able结尾的表示 能...样,可以做...-- 是用接口定义的 iterator方法提供的。
            也就是iterator方法需要返回一个Iterator对象
    Iterator 接口 java.util.Iterator    or 结尾是都是表示 ...样的人 or ... 者
            iterator就是迭代者,我们一般叫迭代器包含3个方法: hasNext ,  next , remove
03.Array 类和 Arrays类
    数组类Array public final class Array extends Object
            元素的类型必须相同。
            它无法判断其中实际存有多少元素,length只是告诉我们array的容量
    静态类Arrays  public class Arrays extends Object
            静态类专门用来操作array ,提供搜索、排序、复制等静态方法
                equals() sort()

04.Collection 接口 和 Collections 类
    Collection 接口 java.util.Collection 是一个集合接口(集合类的一个顶级接口)
    Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,
        用于对集合中元素进行排序、搜索以及线程安全等各种操作
             排序(Sort)    混排(Shuffling) 拷贝(Copy)等

Cloneable接口 --缺少clone方法
            Object 类的clone 方法是受到保护的

其他说明:

通过接口引用对象 -- 通过类 引用对象
01.声明接口的变量-接口的变量必须引用实现了接口的类对象
    Collection<String> c = new HashSet<>();
如果有合适的接口类型--那么对于参数-返回值-变量和域,都应该使用接口类型进行声明
如果没有合适的接口类型,可以用类来引用对象
02.接口中定义这些常量,调用的时候直接接口名.常量名来调用

blogroll

social