构造器

    和类名相同,分无参构造器和有参构造器


方法重载

    依据参数列表的不同进行重载,不能依据返回值的不同进行重载(因为很多方法的调用并不关心返回值)


this关键字

    this关键字只能在方法内部使用,标识对"调用方法的那个对象"的引用。

    return this, 返回当前对象的引用,可以对当前对象进行链式操作

    构造器中调用构造器,使用this(args),且必须将构造器调用放在最起始处,否则编译器报错


static

    static方法就是没有this的方法。在static方法的内部不能调用非静态方法,反过来倒是可以的,而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。

    

finalize()方法

    工作原理:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。所以要是你打算用finalize(),就能在垃圾回收时刻做一些重要的清理工作。

    不推荐适用finalize()做清理工作,因为对象可能不被垃圾回收,finalize()也就不会被保证一定被执行。所以不要指望finalize(),必须创建其它的清理方法,并且明确地调用它们。


成员初始化

    基本类型字段,默认初始化为boolean(false),char(),byte(0),short(0),int(0),long(0),float(0.0),long(0.0)。

    引用类型,默认初始化为null

    指定初始化:定义字段时即初始化,所有对象的字段初始值都一样

    构造器初始化:创建对象时,初始化

    初始化顺序:在类的内部,变量定义的先后顺序决定了初始化的顺序。且优先级大于构造器初始化


静态初始化

    第一次访问静态数据的时候,静态对象会被初始化。伺候,静态对象不会再次被初始化。

    初始化的顺序是先静态对象(如果他们尚未因前面的对象创建过程而被初始化),而后是"非静态"对象


静态显示初始化

    class XX {

        static {

            xx;

        }

    }

    与其它静态初始化动作一样,这段代码仅执行一次,当首次生成这个类的一个对象时,或者首次访问       属于那个类的静态数据成员时(即便从未生成过那个类的对象)


非静态实例初始化

    class XX {

        {

            xx;

        }

    }

    当创建该类的对象时,无论调用那个构造器, {xx;}都将会被执行


数组初始化

    数组是相同类型的,用一个标识符名称封装到一起的一个对象序列或基本类型数据序列。

    数组定义方式:int[] a; int a[], 前者更符合语义,后者为c++中常用的形式

    初始化:int[] a = {1,2,3,4,5,6};

    


可变参数列表

    class XX {

        xx(Object[] args) {}

        yy(ClassType... args) {}

    }

    有了可变参数,就再也不用显式地编写数组语法了,当你指定参数时,编译器实际上会为你去填充数组。你获取的仍旧是一个数组


枚举类型

    public enum Color {

        RED, WHITE, YELLOW;

    }

    public enum ReturnCode {

        SUCCESS("0", "ok"), FAIL("1", "error");

        String code;

        String message;

        ReturnCode(String code, String message) {

            this.code = code;

            this.message = message;

        }

    }

    枚举本质上还是一个类,所有类的很多特性在枚举里面也是通用的。枚举可以用于switch