java知识
说出Servlet的生命周期,并说出Servlet和CGI的区别
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方 法,
service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等, 当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方 法,
一个实例可以服务于多个请求,并且其实例一般不会销毁, 而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
请说出你所知道的线程同步的方法
wait():使一个线程处于等待状态,并且释放所持有的对象的lock。 sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,
调用此方法要捕捉InterruptedException异常。 notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,
并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线
而且不是按优先级。 Allnotity():唤醒所有处于等待状态的线程,注意并不是给所有唤醒线程一个对象
而是让它们竞争。
内部类可以引用它的包含类的成员吗?有没有什么限制?
如果不是静态内部类,完全可以。那没有什么限制!
在静态内部类下,不可以访问外部类的普通成员变量,而只能访问外部类中的静 态成员
Java中线程间怎么通讯?什么叫僵死线程?
Java中线程间通讯可以用共享变量,或者管道。
僵死线程: 在多线程中,线程会sleep,当程序停止时,线程仍然处于sleep中,就出现了僵死线程
谈谈final,finally,finalize的区别。
final:如果一个类用final修饰,那么这个类不能被继承。
finally:在异常处理时提供 finally 块来执行任何清除操作。
finalize:方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象 从内存中清除出去之前做必要的清理工作。
finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。 注意:finalize不一定被jvm调用,只有当垃圾回收器要清除垃圾时才被调用。
private static final long serialVersionUID = 7249069246763182397L;
final 方法
finally 是在 return 表达式运行后执行的 , 此时将要 return 的结果已经被暂
存起来 , 待 finally 代码块执行结束后再将之前暂存的结果返回
在 Java 中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;
并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方
法的功能称为 Java 语言的反射机制。
Annotation(注解)是 Java 提供的一种对元程序中元素关联信息和元数据( metadata)的途径和方法。
a+=b 的意思 a=a+b
同理:a|=b就是 a=a|b,
然后按照楼上所说的去做二进制的 或运算
Java 多态
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:
![](https://img2022.cnblogs.com/blog/300632/202205/300632-20220529115000786-786983715.png)
多态的实现方式
方式一:重写:
这个内容已经在上一章节详细讲过,就不再阐述,详细可访问:Java 重写(Override)与重载(Overload)。
方式二:接口
- 1. 生活中的接口最具代表性的就是插座,例如一个三接头的插头都能接在三孔插座中,因为这个是每个国家都有各自规定的接口规则,有可能到国外就不行,那是因为国外自己定义的接口类型。
- 2. java中的接口类似于生活中的接口,就是一些方法特征的集合,但没有方法的实现。具体可以看 java接口 这一章节的内容。
方式三:抽象类和抽象方法
详情请看 Java抽象类 章节。
14.overload和override的区别?
Overload是重载,是有相同的方法名,但参数类型或个数彼此不同; Override是重写,是在子类与父类中,子类中的方法的方法名,
参数个数、类型都与父类中的完全一样,在子类中覆盖掉了父类的方法。
102.内部类可以引用它的包含类的成员吗?有没有什么限制?
如果不是静态内部类,完全可以。那没有什么限制!
在静态内部类下,不可以访问外部类的普通成员变量,而只能访问外部类中的静 态成员
147.String s = new String("xyz");创建了几g 个String Object?
2个,一个是“xyz”,一个是“xyz”的引用对象s。