您的位置:首页 > 编程语言 > Java开发

Java基础知识总结回顾(1)

2018-03-26 10:57 337 查看

final finally finalize的区别

final用于修饰类、成员变量和成员方法。

–被final修饰的类不能被继承,类中的所有方法都不能被重写,也就是说不能同时使用abstract和final修饰同一个类;

被final修饰的方法不能被重写,但是子类可以使用父类中final修饰的方法;

被final修饰的成员变量是不可改变的,即如果该成员变量是基本数据类型,则初始化后其值不能被改变,如果是引用类型,则只能指向初始化时的对象,但是对象中的内容是允许改变的。

方法内声明的类或者方法内的匿名内部类,访问该方法内定义的变量,该变量必须要用final修饰。当内部类访问局部变量时,会扩大局部变量的作用域,如果局部变量不用 final 修饰,我们就可以在内部类中随意修改该局部变量值,而且是在该局部变量的作用域范围之外可以看到这些修改后的值,会出现安全问题。

Finally通常和try catch搭配使用,保证不管有没有发生异常,资源都能够被释放(释放连接、关闭IO流)。

Finalize是object类中的一个方法,子类可以重写finalize()方法实现对资源的回收。垃圾回收只负责回收内存,并不负责资源的回收,资源回收要由程序员完成,Java虚拟机在垃圾回收之前会先调用垃圾对象的finalize方法用于使对象释放资源(如关闭连接、关闭文件),之后才进行垃圾回收,这个方法一般不会显示的调用,在垃圾回收时垃圾回收器会主动调用。

基本数据类型和包装类

即Java基本数据类型和包装类之间的区别。首先,Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型

基本类:byte short int long float double char boolean

包装类:Byte Short Integer Long Float Double Character Boolean

比较:

基本数据类型存储数据值,而包装类存储对象的引用;

包装类的默认初始值是null,而基本数据类型的默认值不同,如int为0;

包装类的声明需要使用new关键字实例化,存放在堆中,可以用在集合中。

关系:

由基本类型向对应的包装类转换称为装箱,例如把 int 包装成 Integer 类的对象;

包装类向对应的基本类型转换称为拆箱,例如把Integer 类的对象重新简化为 int。

重写与重载的区别

1. 重写

重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写!

重写的好处在于子类可以根据需要,定义特定于自己的行为,也就是说子类能够根据需要实现父类的方法。但重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。

重写的规则:

参数列表、返回类型必须与被重写方法相同;

访问权限不能比父类中被重写的方法的访问权限更低;

声明为final和static的方法不能被重写,但是声明为是static的方法可以在子类中再次声明;

子类和父类如果在同一个包中,子类可以重写除了声明为private和final的方法以外的所有方法,如果不在同一个包中,子类只能重写父类的public和protected的非final方法;

父类的构造方法不能被子类重写; 如果不能继承一个方法,则这个方法就不能被被重写。

2. 重载

重载是同一个类或其子类中,同一个方法的不同实现过程,方法名相同但是参数不同,返回类型可以相同也可以不同。每一个重载的方法(包括构造函数)必须有一个独一无二的参数类型列表。

重载的规则:

被重载的方法必须改变参数列表;

被重载的方法可以改变方法的返回类型;

被重载的方法可以改变访问修饰符;

被重载的方法可以声明新的或更广泛的检查异常;

方法能够在同一个类中或者在一个子类中被重载。

区别点重载原则重写原则
参数列表必须修改一定不能修改
返回类型可以修改一定不能修改
异常可以修改可以减少或删除,一定不能抛出新的或者更广的异常
访问可以修改一定不能做更严格的限制(可以降低限制)
方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

抽象类和接口的区别

接口和抽象类都是继承树的上层,他们的共同点如下:

都是上层的抽象层。

都不能被实例化

都能包含抽象的方法,这些抽象的方法用于描述类具备的功能,但是不提供具体的实现。

他们的区别如下:

在抽象类中可以写非抽象的方法,从而避免在子类中重复书写他们,即可以提供方法的具体实现;接口中只能有抽象的方法,提供声明不提供具体实现。

一个类只能继承一个直接父类,这个父类可以是具体的类也可是抽象类;但是一个类可以实现多个接口。

抽象类是对事物或类别的抽象,而接口是对行为的抽象。抽象类中可以含有各种类型的成员变量也可以包含静态代码块和静态方法,而接口中只能是含有public static final类型的成员变量并且不能包含静态代码块和静态方法。

接口中方法只能是public abstract类型,而抽象类中可以不含有抽象方法,但一般都会包含抽象方法。

部分内容来源于其他网站的总结
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java 基础知识 总结