初始化与清理【java编程思想杂记】

5.1 用构造器确保初始化

1)构造器名称必须与类名完全一样,因此每个方法的首字母应该小写的规则不适应构造方法。

2)java中,“初始化”和“创建”捆绑在一起,二者不分离。

3)构造方法没有返回值。

5.2 方法重载

1)既然构造方法必须和类名一致,当需要使用不同类型的参数来构造对象时,该怎么办呢?因此,构造方法是必须使用方法重载的原因之一。

2)重载规则:每个重载方法必须有一个独一无二的参数类型列表,甚至参数顺序不同也可以用于方法重载,但是一般不推荐使用

3)对于char、byte、short、int、long、float、double:如果传入的数据类型(实际参数类型)小于方法中声明的形式参数类型,实际数据类型就会被提升;char略有不同,如果无法找到恰好接受char参数的方法,就会把char直接提升为int类型。

4)如果传入参数类型大于形式参数类型,必须通过窄化转化(向下转型)来操作,否则编译器会报错。

5)不可以返回值类型来区别重载。

5.3 默认构造器

1)若没有创建构造器,编译器就自动创建一个默认构造器;否则不创建。

5.4 this关键字

1)this表示“调用方法的那个对象”,即当前对象。一般作为当前对象的引用。

2)应用:如果要把自身返回,可以使用return this;或者想把当前对象作为参数传递,也使用this。

3)还可以在构造器中使用this,如this(String arg1,int arg2 );构造器中利用this调用其他的构造器不可以同时调用两个,而且本语句必须位于第一行。

4)除构造器外,编译器禁止在任何其他方法中调用构造器。

5)static方法就是没有this的方法。在static方法内部不能调用非static方法。可以在没有创建任何对象的前提下,通过类本身调用static方法,实际上,这正是static方法的主要用途,这看起来很像全局方法。

5.5 清理:终结处理和垃圾回收

1)Java有垃圾回收器负责回收无用对象占据的内存资源。然而,垃圾回收器一般只知道释放那些经由new分配的内存,对于非new创建的内存,它不知怎么释放。

2)finalize()的工作原理:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用finalize()方法,并且在下一次垃圾回收动作发生时,才真正回收对象占用的内存。

3)实际上,由于java中处处是对象,对象又都是由new创建的,finalize()几乎无用武之地。其实finalize主要使用在调用“本地代码”(非java代码)的情况下,本地代码目前只支持C/C++,但这二者又可以调用其他语言,所以实际可以调用任何语言代码。

4)如果java虚拟机并未面临内存耗尽的情形,它不会执行垃圾回收。因为垃圾回收本身也是占用资源的。

5)finalize()还可以用来验证对象终结条件。可以在finalize()中加入一些验证语句,判断对象被清理之前,是否完成了某些该有的操作。

5.6 成员初始化

1)局部变量必须初始化,否则编译出错。

2)char的默认初始值是空格,对象的默认初始值是null,boolean的默认初始值是false。

3)初始化顺序:变量初始化-->构造方法-->一般方法。静态(只被初始化一次)-->非静态

4)在java中,可以将一个数组赋值给另一个数组,如:a2=a1;实际上,这仅仅是复制了引用,通过a2对数组的任何修改,a1也会产生同样的变化。

5)所有数组都有一个固有成员,length。

6)java 5以后,java提供可变参数列表,如:printArray(Object...  args){};调用语句可以是printArray(new A(),new B(), "string");同时,将0个参数传递给可变参数列表是可行的。

可变参数列表与自动包装机制和谐共处。两个重载方法都有可变参数列表,应该使它们都添加一个非可变参数,否则编译出错。

5.9 枚举类型

1)创建枚举类型时,编译器会自动添加一些特性,比如:toString();ordinal();static values()。

2)enum可以在switch中使用,二者是绝佳的组合。


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值