1、用构造器确保初始化

构造器与类名相同,无返回值,用于将需要初始化的类内变量初始化。

2、方法重载

相同方法名,不同的参数类型列表(包括参数的数据类型、参数的数量)

3、默认构造器

别名:无参构造器
作用:创建一个默认对象。
若类中未显示定义构造器时,编译器默认创建一个默认构造器;
若类中显示定义了构造器时,编译器就不会创建默认构造器;
若类中定义的所有构造器都有参数时,该类不存在默认构造器。

4、this关键字

(1)只能在方法内部使用,表示对调用方法的那个对象的引用。
(2)this关键字可以调用构造函数,但是必须放在最起始处且只能调用一次。
(3)方法参数x与类内变量名x重复时,可以使用this.x来调用类内变量。
(4)static关键字静态方法,其本身不能直接调用非静态方法,可以通过传入一个对象的引用到静态方法中,通过这个对象即可调用非静态方法和访问非静态数据成员。

5、清理:终止处理和垃圾回收

关于垃圾回收机制涉及Java虚拟机底层原理。见Java虚拟机实现原理研究。

6、成员初始化

在类中,可以在变量定义的时候进行初始化一个值也可以不做初始化,编译器会默认赋值0。

7、构造器初始化

(1)变量定义的顺序决定了初始化的顺序。先初始化变量定义的内容,然后调用方法的时候再在方法内进行初始化。
(2)静态数据初始化

  • 基本类型的静态数据会初始化一个标准初值
  • 对象的初始化会默认一个null引用。

显式静态初始化,看起来很像一个方法,其实只是个初始化的作用域。

  1. 例子:
  2. public class A{
  3. static int i;
  4. static{
  5. i = 5;
  6. }
  7. }

显式非静态初始化,与显式静态初始化类似,少了个static

  1. 例子:
  2. public class A{
  3. int i;
  4. {
  5. i = 5;
  6. }
  7. }

8、数组初始化

一组相同数据类型的数据序列。
(1)定义数组引用

  1. 例子:
  2. int[] a1;//个人倾向于使用这种,清晰的表达了数据类型式int数组。
  3. int a1[];

(2)初始化
Java编译器不允许指定数组大小,像C++这样int a[10],确定数组大小需要初始化。
Java中数组有一个固有成员length,表示数组中包含了多少个元素。

  1. //直接赋值
  2. int[] a1 = {1, 2, 3, 4};
  3. //赋予基础初值
  4. int[] a1 = new int[18];

(3)可变参数列表
数组的一种特殊用途,用于方法的参数,设置为Object类的数组引用作为参数。

  1. 第一种
  2. void f(Object[] args){
  3. for(Object obj : args){
  4. }
  5. }
  6. 第二种
  7. void f(Object... args){
  8. for(Object obj : args){
  9. }
  10. }

9、枚举类型

enum使用方法同C++