Java编程思想之五-初始化与清理
- 初始化和清理的作用:为了提高程序的安全性,消除资源占用的浪费,Java当中采用了构造器来初始化,提供了“垃圾回收器”是内存资源自动回收。
- Java当中,提供了构造器来进行初始化操作,因此就没有必要在每个类都要定义一个initialize () 方法来进行初始化操作。
- Java类的构造器名称必须与类名相同,它是一种特殊类型的方法,因为它没有返回值(new表达式返回的是新建对象的引用,但构造器本身并没有任何返回值),而且没有参数的构造器是默认构造器,从概念上讲,“初始化”和“创建”是彼此独立的,但是在Java当中,“初始化”和“创建”捆绑在一起,两者不分离。
- 方法的重载是指方法名相同,参数不同,Java通过参数类型列表来确定执行的是哪一个方法,传输过程中,如果传入的数据类型小于方法中声明的形式参数类型,实际数据类型就会被提升,另外,根据方法的返回值来区分重载方法行不通。
- Java当中,this关键字只能在方法内部使用,表示对当前对象的引用,如果在方法内部调用同类中另一个方法,不必使用this,直接调用即可。
- Java静态类,static方法内部不能调用非静态方法,static方法就是没有this的方法。
- Java当中的垃圾回收器只知道释放那些经由new分配的内存,对于并非使用new获得的那些内存,Java允许在类中定义一个名为finalize()的方法,它的工作原理:一旦垃圾回收器准备好释放对象占用的存储空间,会首先调用finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存,如果程序执行结束,垃圾回收器一直都没有释放所创建的任何对象的存储空间,程序退出时,这些资源也会全部交还给操作系统。
- 对象可能不被垃圾回收,垃圾回收不等于析构,垃圾回收只与内存有关;无论是“垃圾回收”还是“终结”,都不能保证一定会发生,如果Java虚拟机并没有面临内存耗尽的情况下,它不会浪费时间去执行垃圾回收去释放内存;System.gc()用于强制进行终结动作。
- Java垃圾回收采用的是自适应工作模式,“停止-复制”要求在释放旧有对象之前,必须把存活的对象把旧堆复制到新堆,将会导致大量的内存复制行为,垃圾回收引入了块,有了块之后,垃圾回收器在回收的时候就可以望废弃的块中复制对象了,每个块都有相应的代数来记录它是否存活,块在某处被引用,代数也会增加,垃圾回收器将对上次回收动作之后新分配的块进行整理,垃圾回收器会定期进行完整的清理动作-大型对象不会被复制(只是代数会增加),内含小型对象的那些块则被复制并整理,Java虚拟机会进行监视,如果所有对象都很稳定,垃圾回收器的效率降低的话,就切换到“标记-清扫”方式,同样,Java虚拟机会跟踪“标记-清扫”的效果,要是堆空间出现很多碎片,就会切换回“停止-复制”方式,这就是“自适应”技术。
- 在同一个类中无论局部变量放在任何位置,它们都会在调用构造器或其他方法之前得到初始化。
- 无论创建多少个对象,静态数据都只占用一份存储区域,初始化的顺序是先静态对象,而后是“非静态”对象,构造器实际上也是静态的。
- 在类的内部,变量定义的先后顺序决定了初始化的顺序,即使变量定义散布于方法定义之间,它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。
- Static关键字不能应用于局部变量,它只能作用于域,如果一个域是静态的基本类型域,且没有初始化,那么,它默认是基本数据类型的初值,如果是对象引用,它默认的初值就为null。
- 所有数组都有一个固有成员length,Java数组默认从0开始,以length-1结束。
- Arrays.toString()方法属于java.util标准类库,它将产生一维数组的可打印版本。
- 枚举类型enum关键字,枚举类型的实例是常量,按照命名惯例它们都用大写字母表示。
相关推荐
java编程思想-初始化与清理了解this之后,你就能更全面地理解“静态(static)方法”的含义。静态方法就是没有this的方法。在“静态方法”的内部不能调用“非静态方法”,反过来倒是可以的。而且你可以在没有创建...
Java编程思想第05章初始化与清理.ppt
Java编程思想初始化与清理PPT教案学习.pptx
但是在解读编程思想的时候还是发现了许多的细节问题自己并没有完全的掌握.既然是研磨,那么应该更加的细致. i.构造方法的重载. 首先说明一下,为什么构造方法需要重载. 需要重载的一个重要原因是,因为我们...
第15章 泛型 第16章 数组 第17章 容器深入研究 第18章 Java I/O系统 第19章 枚举类型 第20章 注解 第21章 并发 第22章 图形化用户界面 附录A 补充材料 可下载的补充材料 Thinking in C:Java的基础 Java编程思想 ...
第5章 初始化与清理 5.1 用构造器确保初始化 5.2 方法重载 5.2.1 区分重载方法 5.2.2 涉及基本类型的重载 5.2.3 以返回值区分重载方法 5.3 缺省构造器 5.4 this关键字 5.4.1 在构造器中调用构造器 5.4.2 static的...
文档是自己在参考Java编程思想的初始化与清理的过程中总结的关于静态子句的作用的文档。
thinkingjava 编程思想 3、操作符 4、控制执行流程 5、初始化与清理 6、访问权限控制 7、复用类 8、多态 9、接口 10、内部类
Java编程思想(第四版) Thinking in Java (Forth Edition) 包含了很多书本中的源代码,因为从官网提供的资源中无法获取源代码。为了更好的学习,决定,手打源代码。一方面练习编程速度,同时记忆代码,学习编程...
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。 拉里•埃里森 就业前景 从就业与择业的...
readonly 和 const 数据成员不同之处在于 const 要求你在声明时进行直接初始化。看下面的例程: 复制内容到剪贴板 代码: class MyClass { const int constInt = 100; //直接进行 readonly int myInt = 5; //直接...
18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间成员速查.269 参 考 资 料 .300 <<page 4>> page begin==================...