java题库总结五
1.子类A继承父类B, A a = new A(); 则父类B构造函数、父类B静态代码块、父类B非静态代码块、子类A构造函数、子类A静态代码块、子类A非静态代码块 执行的先后顺序是?
父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A构造函数
2.
public
class
SystemUtil{
public
static
boolean
isAdmin(String userId){
return
userId.toLowerCase()==
"admin"
;
}
public
static
void
main(String[] args){
System.out.println(isAdmin(
"Admin"
));
}
}
在源码中 toLowerCase 是重新 new String()
所以为 == 是比较对象是否是同一个对象,所以为 false 。
5.同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间,静态变量放在类的方法区
session用来表示用户会话,session对象在服务端维护,一般tomcat设定session生命周期为30分钟,超时将失效,也可以主动设置无效; 2.cookie存放在客户端,可以分为内存cookie和磁盘cookie。内存
cookie在浏览器关闭后消失,磁盘cookie超时后消失。当浏览器发送请求时,将自动发送对应cookie信息,前提是请求url满足cookie路径; 3.可以将sessionId存放在cookie中,也可以通过重写url将sessionId拼接在url。因此可以查看浏览器cookie或地址栏url看到sessionId; 4.请求到服务端时,将根据请求中的sessionId查找session,如果可以获取到则返回,否则返回null或者返回新构建的session,老的session依旧存在
6.List、Set的父接口为collection ,map集合没有父接口
HashSet
Hashcode+equals 保证不能存放相同的值,基于HashMap实现的
TreeSet 有序集合 自动排序 基于TreeMap实现的,自定义排序
List 有序 可重复
ArrayList 长度可变的数组 查询和符之比较快
LinkedList 删除和增加比较快
Map集合 key value键值对 Iterator迭代器遍历
ArrayList 长度可变的数组
ArrayList是线程不安全的,Vector是线程安全的 (方法上加了锁)
HashTable的方法是同步的,Dictinary类 线程安全
HashTable不支持序列化 提供contains方法 key value 不能为空
底层实现 数组+链表的方式存储