Java编程思想笔记(初始化与清理)

      1.用构造器确保初始化:new Rock(); //将会为对象分配存储空间,并调用相应的构造器。

      2.方法重载

      2(1)区分重载方法:每个重载的方法都必须有独一无二的参数类型列表(参数顺序的不同也足以区分两个方法,一般不要这样做)

      2(2)涉及基本类型的重载:如果传人的数据类型小于方法中声明的形式参数类型,实际数据类型就会被提升(char型略有不同,如果无法找到恰好接受char参数的方法,就会把char直接提升至int)。如果传人的实际参数较大,就得通过类型转换来执行窄化转换。

      2(3)以返回值区分重载方法:(不用)

      3.默认构造器:你没有提供任何构造器,编译器会认为“你需要一个构造器,让我给你制造一个吧”;但假如你已写了一个构造器,编译器则会认为“啊,你已写了一个构造器,所以你知道你在做什么,你是刻意省略了默认构造器。”

      4.this关键字:this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。为了将其自身传递给外部方法,Apple必须使用this关键字。

      4(1).在构造器中调用构造器:由于参数s的名称和数据成员s的名字相同,所以会产生歧义。使用this.s来代表数据成员就能解决这个问题。

      4(2).static的含义:仅仅通过类本身来调用static方法(static主要用途)

      5.清理:终结处理和垃圾回收:1.假设某个对象在创建过程中会将自己绘制到屏幕上,如果不是明确地从屏幕上将其擦除,它可能永远得不到清理。2.只要程序没有濒临存储空间用完的那一刻,对象占用的空间就总得不到释放。如果程序执行结束,并且垃圾回收器一直都没有释放你创建的任何对象的存储空间,则随着程序的推出,那些资源也会全部交还给操作系统。

      5(1).finalize()的用途何在:回收程序不再使用的内存。

      5(2).你必须实施清理:如果希望进行除释放存储空间之外的清理工作,还是得明确调用某个恰当的Java方法。这就等同于使用析构函数了,只是没有它方便。

      5(3).终结条件:要是对象代表了一个打开的文件按,在对象被回收前程序员应该关闭这个文件。只要对象中存在没有被适当清理的部分,程序员就存在很隐晦的缺陷。finalize()可以用来最终发现这种情况——尽管它并不总是会被调用。如果某次finalize()的动作使得缺陷被发现,那么就可据此找出问题所在——这才是人们真正关心的。

      5(4).Java垃圾回收器如何工作:

      6.成员初始化:数据成员的初始值没有给出,但它们确实有初始值(char值为0,所以显示为空白)。这样至少不会冒“未初始化变量”的风险了。在类里定义一个对象引用时,如果不将其初始化,此引用就会获得一个特殊值null。

      6(1).指定初始化

      7.构造器初始化:无法阻止自动初始化的进行,它将在构造器被调用之前发生。public class Counter{ int i; Counter() { i = 7;}} //i首先会被置0,然后变成7。

      7(1).初始化顺序

      7(2).静态数据的初始化:1.无论创建多少个对象,静态数据都只占用一份存储区域。2.static关键字不能应用于局部变量,因此它只能作用于域。3.只有在第一个Table对象被创建(或者第一次访问静态数据)的时候,它们才会被初始化。此后,静态对象不会再次被初始化。4.初始化的顺序是先静态对象,而后是“非静态”对象。

      7(3)显示的静态初始化:static int i; static {i = 47;}

      7(4).非静态实例初始化:

      8.数组初始化:int[] a1;(或者 int a1[];)

      8(1).可变参数列表:static void printArray(Object... args)

      9.枚举类型:你可以将enum用作另外一种创建数据类型的方式,然后直接将所得到的类型拿来使用。

    

原文地址:https://www.cnblogs.com/Zara/p/5760016.html