java基础面试题总结之一

面向对象的三大特性
继承 :子类继承父类的变量和方法,提高代码的复用效率,
多态 :指的是不同类的对象对同意消息做出响应,主要有两个特点:重写和重载
重写就是子类重写父类的方法,参数列表和个数及其返回值都相同,也叫做运行时多态
重载就是一个类中有多个同名的方法,但是他们的返回值和参数列表不同,也叫做编译时多态。
封装:指的是对数据的封装,对数据的访问只能通过已定义的界面,就是通过一系列的接口进行访问

抽象类和接口的区别
抽象类:
一个抽象类中有抽象方法和普通方法
只能被继承,但是一个类只能继承一个类
一个抽象类中方法是随意的。

接口:
一个接口中只能是抽象的方法
只能实现,但是一个类可以实现多个接口
接口中定义的方法只能是public static final修饰的

final finally和finalize的区别:
final是修饰静态方法和变量,及其对象,被修饰后不能被引用。通常放在堆中。当一个方法被final修饰后子类不能重写该方法。
finally:是try —catch中的,不管程序出现不出现异常,程序都会执行这个块,经常在释放资源的情况下使用,比如jdbc连接数据库的时候就是借助此块进行释放资源。
finalize是object中的方法,在垃圾回收中执行调用被回收对象的finalize()方法,如果你要关闭文件,要注意一番垃圾回收准备好释放对象占用的空间,将首先调用此方法,并且在下一次调用垃圾回收时才会真正的回收对象占用的内存。

String时基本类型吗?
不是的,时引用类型,基本欸型包括int double float char byte boolean short long

值传递和引用传递的区别:
值传递是在方法调用是,实参会把值传递给形参,形参只是初始化一个临时的存储空间,虽然有着相同的值但是形参不会改变实参得值。
引用传递是在方法调用的时候,传递的是对象,形参和是实参指向的是同一个单元。

==和equals和hashcode的区别:
==是用来比较两个变量是否相等,也就是说比较两个变量在内存中存储的值是否相同。
equals是比较连个对象的内容是否相同。
hashcde是来判断两个对象是否相等

String stringbuffer和stringbuilder的区别:
String是不可变字符串,如果要将其进行修改的话要创建一个Stringbuffer对象,然后调用其中的append()方法,最后调用他当中的toString()方法。Stringbuffer是可修改的字符串,如果进行要进行修改建议使用Stringbuffer,Stringbuilder也是字符缓冲区,在执行效率来看,Stringbuffer次于Stringbuilder,Stringbuffer支持单线程,而Stringbuilder支持多线程,线程安全问题就来了,如果考虑线程安全的话建议使用Stirngbuilder。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章