java基础复习1

1、面向对象

 

  1. 抽象:抽象就是提炼,从众多事物中抽取共同的、与当前目标相关的特征,忽略其他细节,从而形成一个较简单的概念。
  2. 继承:继承是一种层次模型,子类继承了父类,那么子类与父类就是一种isa的关系,子类继承了父类所有可见的数据和行为,子类也可以通过覆盖和重写以及新增数据和行为来满足更具体的需要。利用继承可以实现代码的复用。
  3. 封装:将抽象得到的数据和行为整合成一个类,并隐藏类的属性和方法,控制属性和方法的访问级别,对外仅公开接口。
  4. 多态:将父类的引用指向不同的子类对象,以实现 根据引用对象的不同以不同的方式实现相同的操作。多态性要求面向接口或父类编程,以屏蔽掉不同子类的差别,写出通用的代码。

 

2、java的数据类型

 

  • 分为 基本类型和引用类型,基本类型有8种:short int long float double  byte  boolean  char。java为每种基本数据类型提供了封装类。引用类型实例变量的缺省值为null,基本数据类型实例变量的缺省值与类型 有关。

 

3、String与StringBuffer的区别:

 

  • String声明的是不可变对象,如果改变String对象的值,会重新创建一个新的对象,然后将这个对象的引用指向新创建的对象,String是final的,所以不能继承。StringBuffer维护了一个字符数组,适合频繁进行字符串操作。

 

4、运行时异常和一般异常的异同:

 

  • Throwable是Java所有异常处理的基类,他有两个子类:Error和Exception 。
    • Error(错误)是JVM级别的严重错误,一旦发生,JVM将无法继续运行,因此是不可捕获的。
    • Exception(异常)主要有两种:Checked和Runtime 。
    •  
      • Checked异常 是编译器要求我们必须catch的异常。
    •  
      • Runtime异常 编译器不要求我们处理。当出现这样的异常时,总是由虚拟机接管,比如:我们从来没有人去处理过NullPointerException异常。当出现运行时异常时,如果不进行处理,那么就会导致线程终止或程序退出。

 

5、Servlet的生命周期:

 

  • Servlet实例运行在Servlet容器中,其生命周期由Servlet容器管理。

 

 

  1. 加载和实例化:在Servlet容器启动或容器检测到需要某个Servlet来响应第一个请求时,加载和实例化该Servlet,因为实例化Servlet是通过反射来完成的,调用的是默认构造函数,所以在编写Servlet时,不能为它添加带参数的构造函数。
  2. 初始化:Servlet容器在第一次响应请求之前调用Servlet实例的init()方法,完成诸如数据库连接之类的初始化操作,init()方法可以使用ServletConfig对象从应用程序配置信息中读取必要的参数来完成初始化操作。
  3. 处理请求:Servlet调用Servlet实例的service()方法完成请求处理,service()调用之前,init()方法必须成功执行,Service()方法通过ServletRequest对象得到客户端的请求信息,通过ServletResponse对象设置响应信息。
  4. 服务终止:当Servlet容器关闭或检测到Servlet实例应该移出容器时,容器调用Servlet实例的destroy()方法来释放掉它所使用的资源
  • 在Servlet的生命周期中init()和destroy()方法都只执行一次。init()方法执行后,Servlet实例被放在内存中通过调用Service()来处理请求。

 

6、说出ArrayList、Vector、LinkedList的存储性能和特性

 

  • ArrayList和Vector都是使用数组数组方式传递数据,所以支持随机访问(按索引访问),但插入和删除数据会涉及元素移动,因此访问快而插入删除慢。由于Vector使用了synchronized(线程安全),通常性能上较ArrayList差。
  • LinkedList使用双向链表实现存储,所以插入删除快而访问数据慢。

7、Collection和Collections的区别:

 

  • Collection是Java集合类的上级接口,他的子类主要有Set和List
  • Collections是针对集合类的一个工具类,他提供了一系列的静态方法来实现集合对象的排序、搜索等操作。

 

8、HashMap和HashTable的区别。

 

  1. HashTable是线程同步的,HashMap不是
  2. HashTable不允许空键值,HashMap允许
  3. HashTable中有contains方法,HashMap以containsValue和containsKey代替
  4. HashTable使用Enumeration,HashMap使用Iterator
  5. 两者使用的哈希码不同
  6. 两者用来存储数据的数组的容量和增长方式不同
  7. HashTable继承自Dictionary类,HashMap是java1.2引进的Map接口的一个实现。

 

9、final,finally,finalize的区别

 

  • final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
  • finally是异常处理语句结构的一部分,表示总是执行。
  • finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法。可以覆盖此方法,以添加垃圾回收时的其他资源回收操作。

 

 

你可能感兴趣的:(java,jvm,数据结构,编程,servlet)