(Java面试题)面向对象编程有哪些特点?String和StringBuffer有什么区别?Integer和int有什么区别?

Java复习题

1、面向对象编程的特点。

  • 封装:数据和代码捆绑在一起,避免外界干扰和不确定性访问。封装可以使得代码模块化。

  • 继承:让某种类型对象获得另一个类型对象的属性和方法。继承可以扩展已存在的代码

  • 多态:同一事物表现出不同事物的能力,即向不同对象发送同一消息,不同的对象在接收时会产生不同的行为(重载实现编译时多态,虚函数实现运行时多态)。多态的目的则是为了接口重用

2、String和StringBuffer有什么区别?
String不可扩展,不能修改字符串。
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

3、Integer和int有什么区别?

  1. int是基本数据类型;
  2. Integer是int的封装类;
  3. int和Integer都可以表示某一个数值;
  4. 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的。
发布了144 篇原创文章 · 获赞 117 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41306364/article/details/102949244