一、全局变量和局部变量
java的全局变量,默认会给初始化值,如果是引用变量,初始化值是null,如果是基本数据类型,数值类型的初始化值为0或者0.0,如果是Char,初始化值为‘’空字符
java的局部变量,默认需要给局部变量初始化值,否则会报错,java不会给出默认值
二、方法,参数,静态域,final (方法参数传递都是一个copy拷贝)
1.final:final的实例域变量,初始化后,不可修改
2.静态域变量,它属于类,不属于方法,可以通过类名调用。
3.实例域,每个实例都会对应有一个实例域变量
4.参数,java偏向于按值调用,值参数,方法调用后,参数值不变。(可以理解为传递给方法的参数值,是一个copy拷贝,尽管在方法中改变了值,但原来但参数变量值仍旧不变)
三、java的参数传递是按值传递的
?一个方法不能修改一个基本数据类型的参数 (即数值型或布尔型)。
?一个方法可以改变一个对象参数的状态。
?一个方法不能让对象参数引用一个新的对象。
四、对象构造 (重载,重写)
1.重载:方法名相同,参数不同
2.重写:方法名相同,参数相同,一般继承父类或者接口,重写的方法就是重写,即指实际调用
3.构造方法,如果没有给域初始化,会默认给初始化值
4.默认构造方法:仅当类没有提供任何构造器的时候, 系统才会提供一个默认的构造器(变量会默认初始值)
五、代码执行顺序
1.静态初始化块
2.静态变量
3.对象初始化块
4.对象构造
六、finalize
可以为任何一个类添加finalize方法。finalize方法在将在垃圾回收之前调用。
1.java可以通过以下方式在垃圾回收之前调用方法
a:java有一个方法:System.runFinalizersOnExit(true);能够确保finalizer方法在java关闭之前调用 此方法不安全,不建议使用
b: Runtime.addShutdownHook();方法可以替代System.runFinalizersOnExit(true);
2.如果需要在使用后立即关闭,可以通过close方法。如IO流的使用或者文件的操作,需要在使用后就关闭,需要手动调用close方法。
原文:https://www.cnblogs.com/lin-bunny/p/13777491.html