1、用构造器确保初始化
构造器与类名相同,无返回值,用于将需要初始化的类内变量初始化。
2、方法重载
相同方法名,不同的参数类型列表(包括参数的数据类型、参数的数量)
3、默认构造器
别名:无参构造器
作用:创建一个默认对象。
若类中未显示定义构造器时,编译器默认创建一个默认构造器;
若类中显示定义了构造器时,编译器就不会创建默认构造器;
若类中定义的所有构造器都有参数时,该类不存在默认构造器。
4、this关键字
(1)只能在方法内部使用,表示对调用方法的那个对象的引用。
(2)this关键字可以调用构造函数,但是必须放在最起始处且只能调用一次。
(3)方法参数x与类内变量名x重复时,可以使用this.x来调用类内变量。
(4)static关键字静态方法,其本身不能直接调用非静态方法,可以通过传入一个对象的引用到静态方法中,通过这个对象即可调用非静态方法和访问非静态数据成员。
5、清理:终止处理和垃圾回收
关于垃圾回收机制涉及Java虚拟机底层原理。见Java虚拟机实现原理研究。
6、成员初始化
在类中,可以在变量定义的时候进行初始化一个值也可以不做初始化,编译器会默认赋值0。
7、构造器初始化
(1)变量定义的顺序决定了初始化的顺序。先初始化变量定义的内容,然后调用方法的时候再在方法内进行初始化。
(2)静态数据初始化
- 基本类型的静态数据会初始化一个标准初值
- 对象的初始化会默认一个null引用。
显式静态初始化,看起来很像一个方法,其实只是个初始化的作用域。
例子:
public class A{
static int i;
static{
i = 5;
}
}
显式非静态初始化,与显式静态初始化类似,少了个static
例子:
public class A{
int i;
{
i = 5;
}
}
8、数组初始化
一组相同数据类型的数据序列。
(1)定义数组引用
例子:
int[] a1;//个人倾向于使用这种,清晰的表达了数据类型式int数组。
int a1[];
(2)初始化
Java编译器不允许指定数组大小,像C++这样int a[10],确定数组大小需要初始化。
Java中数组有一个固有成员length,表示数组中包含了多少个元素。
//直接赋值
int[] a1 = {1, 2, 3, 4};
//赋予基础初值
int[] a1 = new int[18];
(3)可变参数列表
数组的一种特殊用途,用于方法的参数,设置为Object类的数组引用作为参数。
第一种
void f(Object[] args){
for(Object obj : args){
}
}
第二种
void f(Object... args){
for(Object obj : args){
}
}
9、枚举类型
enum使用方法同C++