1.JSP与Servlet区别
相同:本质都是Java类
联系:JSP经过编译生成Servlet;
JSP是Servlet技术的扩展,本质上是Servlet的简易方式。
不同:
- jsp更擅长表现于页面显示,Servlet更擅长于逻辑控制
- Servlet的应用逻辑是在java文件中,并且完全从表现层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。
2.JSP九大内置对象
(口诀:两re,双page,加上ace os)
JSP九大内置对象
3.String、StringBuffer与StringBuilder区别与常用方法
String | StringBuffer | StringBuilder |
---|---|---|
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间 | StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量 | 可变类,速度更快 |
不可变 | 可变,线程安全,多线程操作字符串 | 可变,线程不安全,单线程操作字符串 |
4.反射的理解
5.final, finally, finalize的区别
final 用于修饰属性,方法和类,分别表示:
属性不可变,必须在声明时给出变量的初始值,而在以后的引用中只能读取。
方法不可重写,
类不可继承(其中所有的方法都不能被重写,所以不能同时用abstract和final修饰类,abstract修饰的类是抽象类,抽象类是用于被子类继承的,和final起相反的作用)。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的finalize方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
6.JDK1.8 新特性
-
Lambda表达式
-
函数式接口
-
jdk1.8对hashMap等map集合的优化
-
方法引用和构造器调用
-
Stream API
-
接口中的默认方法和静态方法
-
新时间日期API
7.Object类内的方法
registerNatives() //私有方法
getClass() //返回此 Object 的运行类。
hashCode() //用于获取对象的哈希值。
equals(Object obj) //用于确认两个对象是否“相同”。
clone() //创建并返回此对象的一个副本。
toString() //返回该对象的字符串表示。
notify() //唤醒在此对象监视器上等待的单个线程。
notifyAll() //唤醒在此对象监视器上等待的所有线程。
wait(long timeout) //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。
wait(long timeout, int nanos) //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
wait() //用于让当前线程失去操作权限,当前线程进入等待序列
finalize() //当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
8.为什么要使用lambda表达式
- 避免匿名内部类定义过多
- 可以让你的代码看起来很简洁
- 去掉了一堆没有意义的代码,只留下核心的逻辑
9.Lamda表达式的使用
对于函数式接口(只包含唯一一个抽象方法的接口),可通过lambda表达式来创建该接口的对象。
(params)->表达式
(params)->语句
(params)->{多个语句}