java基础及实际操作

第三章

2019-10-09  本文已影响0人  永不熄灭的火焰_e306

初始化与清理

一、构造器

定义:(1)与类名相同(2)无返回值(且不用void标识)(3)分为有参构造器和无参构造器两种。

1. 构造器初始化

<u>1.1 java程序初始化遵循的3个原则:</u>

(1)静态对象(变量)优先于非静态对象(变量)。注意:静态对象只初始化一次。

(2)父类优先于子类进行初始化。

(3)按照成员变量的顺序进行初始化。(即使变量定义散布于方法定义之中,他们仍然在任何方法(包括构造函数)被调用之前先初始化)

1.2 初始化顺序:

​ 父类静态变量、父类静态代码块------》子类静态变量、子类静态代码块。

​ ----》父类非静态变量、父类非静态代码块、父类构造函数

​ -----》子类非静态变量、子类非静态代码块、子类构造函数

1.3 总结一下对象的创建过程(假设有个名为Dog的类):

①首次创建对象时,java解释器查找类路径,以定位Dog.class文件。

②然后载入Dog.class,有关静态初始化的内容都会执行(静态初始化只在Class对象首次加载的时候进行一次)。

③用new Dog()创建对象时,首先在堆上为Dog对象分配足够的存储空间。

④这块存储空间会被清零,Dog对象中的所有基本类型数据都设置成了默认值。

⑤执行所有出现于字段定义处的初始化动作。

⑥执行构造器。

2、数组初始化

2.1 java中数组的两种定义:

<u>“[]”位置可置于变量前(紧跟前一个关键词)或变量后(紧跟后一个变量)。</u>

①int[] a1; ②int a1[];

定义时初始化:int[] a1={1,2,3,4,5,6};

数组所能使用的最大下标数:length-1

数组的创建是在<u>运行时刻</u>进行的

2.2 数组名之间的复制-----仅仅复制了一个引用(即改变指针位置 类似于 C语言中的指针)

3、方法的重载 与 方法的覆盖(重写)

3.1 方法的重载:是指一个类中定义了多个同名方法。有<u>不同的参数个数</u>、<u>不同的参数类型</u>或者<u>不同的参数顺序</u>。

注意:不能通过方法的访问权限,返回值类型和抛出的异常类型来进行重载。

​ 另外,如果基类的访问权限为private,对于继承来说,就不能在其子类中进行重载,即使子类也定义了一个同名的方法,则只是一个新方法,不会达到重载的效果。

3.2 方法的覆盖:反应的是子类和父类之间的关系。子类覆盖父类的方法并对其进行重写,以达到不同作用。

注意:子类的覆盖方法必须要和父类的被覆盖方法有相同的方法名和参数,相同返回值类型,相同异常类型,且不能为private类型,(若父类为private类型,子类即使有同名方法,则只是一个普通方法而已,并没有对其进行覆盖)。

4、this关键字

this关键字只能用于方法内部,表示对“调用方法的那个对象”的引用,(即只有当需要明确指出对<u>当前对象的引用</u>时,才需要使用this关键字),如果在方法内部调用同一个类的另一个方法,就不必使用this,直接调用即可。

5、static

①类名.方法

②static方法就是没有this的方法,在static方法的内部不能调用非静态方法。

6、关于java中的垃圾回收

①对象可能不被垃圾回收。

②垃圾回收并不等于“析构“。

③垃圾回收只与内存有关。

上一篇 下一篇

猜你喜欢

热点阅读