面向对象章节面试题总结
1.说说你对面向对象思想的理解?
基于面向过程,把我们的需求封装成一个个对象,然后根据我们的需求来选择合适的对象进行开发。
面向对象的思维更多的是考虑如何去选择合适的工具,然后组织到一起干一件事。
2.Java对象初始化顺序?
java对象初始化的执行顺序为:静态语句块>静态变量初始化>实例语句块/成员变量初始化>构造方法,实例语句块与成员变量初始化的相对执行顺序取决于定义的先后顺序。
3.Overload和Override的区别?Overload的方法是否可以改变返回值的类型?
Overload:重载 Override:重写
重载Overload:在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。重载的特点:与返回值类型无关,只看参数列表。
重写Overload:表示子类中的方法可以与父类中的某个方法的名称和参数完全相同。是不可以改变返回值类型的。
4.int和Integer有什么区别?
int 是基本数据类型,Interger是引用数据类型,
Interger 相当于是int 的包装类。是对象的引用,内存指向的是对象的地址,而int是直接存储数据。
5.char型变量中能不能存贮一个中文汉字,为什么?
可以。
char变量是存储Unicode编码的字符的所以可以存储汉字,但是如果某个特殊的汉字没有在Unicode编码里面是不可以被char变量存储的。
6.Java中,Serializable与Externalizable的区别?
Serializable 接口是一个序列化 Java 类的接口,以便于它们可以在网络上传输 或者可以将它们的状态保存在磁盘上,是 JVM 内嵌的默认序列化方式,成本高、脆弱而且不安全。
Externalizable 允许你控制整个序列化过程,指定特定的二进 制格式,增加安全机制。(Externalizable是Java 1.1的遗物。真的不再需要它了。)
7.抽象类和接口有什么区别?
1.抽象类可以提供成员方法的实现细节,而接口中只能 存在抽象方法(默认 public abstract)
2.抽象类中的成员变量可 以是多种类 型,而接口中的成员变量必须用public static final(常量)修饰
3.一个类只能继 承一个抽象类(单继承),但可以实现多个接口(多继承)
4.抽象类中允许含有静态代码块和静态方法,而接口类不能。注意:抽象是对类的整体抽象,包括属性和方法,接口是对行为抽象抽象类是自底向上抽象来的,而接口则是自顶向下设计出来的。
8.String和StringBuilder、StringBuffer的区别?
String类中使用字符数组保存字符串,string对象是不可变的。
StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,这两种对象都是可变的。
StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。
如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。
9.阐述final、finally、finalize的区别。
final:是一个修饰符,说明此类不可以被继承,方法不可以被重写(只可读取不可以被修改)。
finally:表示捕获异常,通常在try()catch块语句中表示不管是执行还是异常都会被执行。
finalize:是Object类中定义的方法,这个方法是java在垃圾回收是调用的。
10.Java中的异常处理机制的简单原理和应用。
java异常 表示程序所遇到的 错误。一般有Error和Exception。Error表示程序死了,如:存溢出,线程死锁Exception表示系统异常或者普通异常,系统异常说明程序报错程序员开发不周导致,普通异常是运行环境不当导致(网络信号差,断电 ,硬盘空间不够)