Java复习题
1、面向对象编程的特点。
-
封装:数据和代码捆绑在一起,避免外界干扰和不确定性访问。封装可以使得代码模块化。
-
继承:让某种类型对象获得另一个类型对象的属性和方法。继承可以扩展已存在的代码
-
多态:同一事物表现出不同事物的能力,即向不同对象发送同一消息,不同的对象在接收时会产生不同的行为(重载实现编译时多态,虚函数实现运行时多态)。多态的目的则是为了接口重用
2、String和StringBuffer有什么区别?
String不可扩展,不能修改字符串。
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
3、Integer和int有什么区别?
- int是基本数据类型;
- Integer是int的封装类;
- int和Integer都可以表示某一个数值;
- int和Integer不能够互用,因为他们两种不同的数据类型;
举例说明:
ArrayList al=new ArrayList();
int n=40;
Integer nI=new Integer(n);
al.add(n);//不可以
al.add(nI);//可以
4、String类能不能被继承?
不能。因为String类是被final修饰的类。
注意:final修饰的类不能被继承。final修饰的方法可以被继承,不能被重写。
5、JSP中动态include和静态include有什么区别?
\ 类型 | 静态导入 | 动态导入 |
---|---|---|
元素类型 | 指令元素 | 动作元素 |
语法 | <%@ include file=“path” %> | <jsp:include page="path"></jsp:include> |
发生阶段 | 翻译阶段 | 运行阶段 |
如果导入页面发生改变 | 需要重新翻译 | 不用管 |
运行效率 | 高 | 低 |
6、final、finally、finalize的区别。
- final可以用来修饰类,方法和变量(成员变量或局部变量)。
- finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常),经常被用在需要释放资源的情况下。
- finalize()是在java.lang.Object里定义的,也就是说每一个对象都有这么个方法。这个方法在gc启动,该对象被回收的时候被调用。其实gc可以回收大部分的对象(凡是new出来的对象,gc都能搞定,一般情况下我们又不会用new以外的方式去创建对象),所以一般是不需要程序员去实现finalize的。