构造器
和类名相同,分无参构造器和有参构造器
方法重载
依据参数列表的不同进行重载,不能依据返回值的不同进行重载(因为很多方法的调用并不关心返回值)
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