`
Xiaor
  • 浏览: 54634 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

第五章 初始化与清理学习总结与疑问

 
阅读更多
1、构造器初始化
①在概念上,“创建”和“初始化”是两回事,在java中,两者是捆绑在一起不可分割的。java提供了构造函数初始化对象,当用户有能力操作对象的方法之前,java编译器自动调用构造函数初始化对象。
②如果一个类中,用户没有定义任何构造函数,系统会自动分配一个默认构造函数(无参构造函数),但是,只要用户定义了至少一个构造函数,系统就不会再自动分配。
③在一个类中,一个构造函数可以调用另一个构造函数(不可以调用两个),但是不允许构造函数在其他方法中被调用。
④java中可以调用C和C++程序(本地方法)。
2、方法重载
①区分重载方法的依据:参数列表(个数,类型,顺序),但不能根据返回值区分。
②传入的数据类型小于方法中声明的形参类型时,会被自动提升,提升顺序为byte-short-int-long-float-double,但是char例外,它直接被提升为int。反之,必须显示进行类型转化,否则编译不通过。
3、清理:终结清理和垃圾回收
①如果程序运行期间不面临内存耗尽的情况,是不会调用垃圾回收器去进行垃圾回收的,因为这也是有开销的。
②垃圾回收器准备好回收某个对象时,先调用finalize方法,在下次回收的时候,才真正的将这个对象回收。
③finalize除了可以做一些清理工作外,如释放非new方式创建对象分配的空间。另外可以作为终结条件进行验证。
④垃圾回收器的模式有引用计数和另一种模式,这种模式的思想是,从堆栈或者静态存储区开始,遍历所有的引用,就可以找到活的对象,然后追踪该对象的所有引用,直至遍历了整个网,不在网内的对象即为死对象,基于这种模式的垃圾回收技术有停止-复制,标记-清除,他们都必须在程序停止的情况下可能进行。
⑤java中提供了JIT编译器提供速度,它负责把程序翻译成本地机器码,机器码要比字节码长的多。翻译时有两种方法:一次全部翻译完和惰性评估
4、成员初始化
①对于方法的局部变量,若未初始化就使用,编译是通不过的。
②类的成员变量会被自动赋值,而且是在构造函数赋值之前。这与成员变量的声明位置无关。
java中初始化顺序:显示静态变量,后是非静态变量,静态变量只被初始化一次,非静态变量会被初始化多次,当它所在的类new一个对象的时候,它就被初始化一次。
③对于类中的static{}程序块,同静态初始化一样只执行一次,当首次生成这个累的一个对象时,或者首次访问属于这个类的静态数据成员时(即使从未生成过
这个类的对象)。
5、数组初始化
①声明方式:int[] a;  int a[];
②int[] a1={1,2,3,4};//这种初始化方式只可以用在定义的地方
  int[] a2=a1;
  当a2改变时,a1也变。
③可变参数列表:数据类型可变,采用Object作为形参;
                数组作为形参:String[],或者String...(java SE5之后支持)
6、enum
①定义形式
public enum Types{T1,T2,T3,T4}
②使用形式
Types t= Types.T1;
③java为enum提供的方法有toString(),ordinal(),values()。
④enum可以用作switch的条件:
Types type;
switch(type){
case T1:  ...; break;
case T2:  ...; break;
...
}


求解:①一个类中,在定义时就被初始化了的String域,和通过构造器初始化的另一个String域,有什么差异?
②垃圾回收第二种模式中,为什么活的对象,一定能最终追溯到其存活在堆栈或者静态存储区中的引用?为什么位于这个网中的对象就是活的,而遍历不到的就是要回收的呢?



分享到:
评论

相关推荐

    初始化和清理.ppt初始化和清理.ppt初始化和清理.ppt初始化和清理.ppt

    初始化和清理是编程中至关重要的概念,特别是在Java这样的高级编程语言中。本节主要讨论了Java中的构造器、成员初始化、对象创建过程、垃圾回收以及垃圾回收器的工作原理。 4.1 构造器 构造器是Java中用于初始化新...

    C++全局变量初始化的一点总结

    这样,变量只在第一次调用函数时初始化。但这种方法无法控制析构顺序,可能会导致未预期的行为。为了应对这个问题,可以使用智能指针,如`std::unique_ptr`,来管理全局资源,确保在需要时初始化并在不再使用时正确...

    java初始化和清理

    Java初始化和清理是Java语言中非常重要的两个过程,它们确保了Java程序的正确运行和资源的有效管理。Java的初始化包括类的加载、连接和初始化三个过程,而清理则主要指垃圾回收机制。 首先,Java初始化的主要特性...

    java 初始化与方法

    总结来说,Java初始化与方法是编程基础,深入理解这两个概念对于任何Java开发者都至关重要。通过阅读源码、运用开发工具和不断实践,我们可以不断提高自己的编程水平,从而在实际工作中游刃有余。

    SIN初始化_混沌初始化_matlab_混沌映射_种群初始化_sin映射初始化粒子群_

    标题中的“SIN初始化_混沌初始化”指的是使用正弦混沌映射对粒子群进行初始位置的设置。混沌系统具有高度的敏感性,使得初始条件的微小差异可能导致显著不同的结果,这为种群的多样性和探索性提供了可能。SIN映射是...

    winform NUNIT的测试初始化和清理

    本文将深入探讨如何在WinForm应用中结合NUnit进行测试初始化和清理工作,以确保测试的准确性和可维护性。 首先,理解NUnit的基础概念至关重要。NUnit是一个开源的.NET测试框架,它提供了一套丰富的断言方法来验证...

    C++构造函数初始化列表

    #### 构造函数初始化列表的作用与语法 构造函数初始化列表的主要作用在于: 1. **成员变量初始化**:它能确保类的成员变量在构造函数体执行之前就被正确初始化,这对于包含复杂类型的成员变量尤其重要。 2. **提高...

    PCI设备BAR空间的初始化

    初始化BAR寄存器是建立这种映射关系的第一步。 3. **资源分配的必要条件**:通过初始化BAR寄存器,系统软件可以为每个PCI设备分配特定的地址空间,这是实现资源共享和避免地址冲突的重要步骤。 #### 三、初始化...

    第7章初始化程序(main.c).rar_Linux的初始化程序main.c

    `第7章初始化程序(main.c).pdf`这份文档可能详细阐述了上述过程中的步骤、函数调用和关键数据结构。通过阅读这份文档,读者可以深入理解Linux内核启动背后的机制,这对于系统开发者和维护者来说至关重要。 总的来...

    ARM初始化文件详解

    ARM初始化文件详解 ...总结,ARM初始化文件是嵌入式系统启动过程中的关键组件,它的正确配置直接影响系统的稳定性和性能。理解并掌握初始化文件的结构和工作原理,对于开发高效、可靠的嵌入式系统至关重要。

    typedef struct 与 struct 的区别及初始化

    初始化结构体时,通常有两种方式:构造函数初始化(如果结构体是类)和成员初始化列表。由于 `struct` 在C++中等同于类,但不支持构造函数,所以我们必须使用成员初始化列表。例如,对于 `PhotoInfo` 结构体,其初始...

    C++类成员和数据成员初始化总结

    6. **常量数组**的问题在于,由于第3和第5条的约束,C++不支持在类中定义常量大小的数组并进行初始化。 关于`const`的用法,我们可以区分两种情况: - `const`在星号左侧,如`const int *ptr`,表示`ptr`指向的内容...

    一个基于机器学习的神经网络初始化方法.pdf

    总结来说,这篇文献强调了初始化在神经网络训练中的重要性,并提出了一种结合机器学习的创新方法,以克服传统BP神经网络的局限性。这种方法有望为神经网络领域的研究和实践带来更高效、更具鲁棒性的解决方案。对于...

    类继承的初始化顺序类,继承的初始化顺序

    在面向对象编程中,类继承是一种非常重要的概念。它允许我们定义一个基类或父类,并从中派生出子类或派生类。通过继承,子类可以复用(或...希望通过对这些知识点的学习,能够帮助读者更好地掌握类继承的初始化机制。

    LS-DYNA3D中的应力初始化_lsdyna_应力初始化_

    利用实验数据进行应力初始化可以提高模拟的准确性,这通常需要与应变测量结合,如应变计或声发射传感器的数据。 8. **后处理与验证**:完成模拟后,通过后处理工具可视化和分析应力分布,对比实验结果或其他计算...

    Java静态初始化块和对象初始化块

    在Java编程语言中,初始化块是程序执行时用于初始化对象或类的重要机制。这里我们将深入探讨两种类型的初始化块:静态初始化块(Static Initializer Block)和对象初始化块(Instance Initializer Block)。这两种...

    FANUC机器人初始化系统的基本方法和步骤.docx

    3. **选择初始化选项**:屏幕上会出现初始化菜单,选择“INIT start”(通常为第三项),输入数字3并按下Enter键确认。 4. **继续初始化**:根据屏幕提示继续操作,输入数字1并按下Enter键确认。 5. **等待初始化...

    第二篇金蝶k3供应链系统初始化.pptx

    初始化是指完成手工与电脑系统的工作交接、数据交接、管理交接的过程。在供应链系统中,初始化是指设置系统的基础参数和基础资料,以便于后续的业务操作。 二、系统初始化流程 系统初始化流程主要包括系统参数...

    DDR 初始化 流程

    在DDR初始化的第一步,电源被应用到DDR芯片上。根据Micron Technology Inc.的资料,为避免DDR2 SDRAM设备的latch-up(闩锁效应),必须满足特定条件。首先,确保所有输出在电源应用期间保持禁用状态,这可以通过将...

    夏普2048三合一打印机初始化

    #### 五、总结 通过上述步骤,可以有效地完成夏普2048打印机的初始化设置。这一过程不仅能够帮助用户更好地管理设备,还能确保打印质量和设备的长期稳定运行。在实际操作过程中,如有任何疑问或遇到难题,应及时查阅...

Global site tag (gtag.js) - Google Analytics