1.关于访问权限:default,protected
default:拒绝一切包外访问
protected:接受包外的子类访问
2、Applet类是浏览器类最为重要的类,一个Applet应用程序从开始执行到结束,经过的生命周期为:
init () :起点,初始化
start():程序开始执行(PS:当含有此方法Applet程序的页面再次访问时会调用此方法)
stop():是Applet停止方法(PS:当含有此方法Applet程序的页面被其他页代替)
destroy():释放分配给它的所有资源
paint(Graphics g):用于画
3、处理异常常用的两种方式:
3.1、try.....catch(捕获处理机制)(补充,当没有catch块的时候,必须得有finally块)
3.2、throws(冒泡处理机制)
4、实现接口约束和子类覆盖父类方法基本上是一样的,但是接口方法默认为public abstract,所以在实现接口方法时候也比必须用public
5、Java中的字符串存储在字符串常量,不会改变,发生改变是会新创一个对象
6、StringBuffer、StringBuilder:两者底层都是以字符数组存在,可以修改内容,区别在于StringBuffer是线程安全,而StringBuilder线程不安全。
7、在设及继承、静态初始化代码块、构造代码块、构造方法
先执行父类静态初始化代码,子类静态初始化代码;然后父类构造代码块、父类构造函数;最后子构造代码块,子类构造函数
8、静态块(static):JVM加载类的执行只执行一次
构造块:类中直接用{},每一次创建对象时执行
关于初始化:
静态块并不是最先初始化的,而是静态域(包含静态变量、静态块、静态方法),静态域中的静态变量还是静态块谁在前面谁就先执行。
静态块(静态变量、静态块)>main()>构造块>构造方法
9、HashMap(解除冲突的主要方法是拉链法)、TreeMap:未进行同步考虑,线程不安全
HashTable、concurrentHashMap都是线程安全(HashTable对整张表进行加锁,而concurrentHashmap对hash表的segment进行加锁)
补充:a.对于Map而言,提供Key到value的映射,一个Map中不能包含不同的key
b.HashTable不可以允许null值,key和value都不可以
HashMap可以允许NULL值,key和value都可以。
c.Hashtable是线程安全的HashMap
Vector是线程安全的Arraylist
Treeset和LinkedList都不是线程安全。
10、collections提供了synchronizedXxx()方法,可以将指定的集合包装成线程同步的集合,List,set
11、抽象方法不能有方法体,但是抽象类可以有非抽象的方法;访问修饰符只能有一个
12、创建Servlet的实例是有servlet容器来完成,且创建servlet实例是在Init()初始化之前完成的。
初始化阶段:servlet启动,读取配置文件中的信息,构造指定的servlet对象,创建servletConfig对象,将servletConfig作为参数调用init()方法。
servlet在多线程下其本身并不是线程安全的。如果在类中定义成员变量,而在service中根据不同的线程对成员变量进行修改,那么在并发的时候会引起错误。最好在方法中定义局部变量,而不是类变量或者对象的成员变量。由于方法中的局部变量在栈中,彼此各自都拥有的独立运行的空间,才能做到线程安全。
13、栈:存放局部变量,函数的参数
堆:存放实例化对象
全局区:存放全局变量和静态变量
常量区:存放常量字符串。
14、关于局部变量和成员变量的区别:作用域的区别;还有就是成员变量有默认值,而局部变量必须出示设值;内存中不一样:成员变量实例化后存放坐在堆内存中,而局部变量存放在栈内存中。
15、HttpServletRequst类主要处理:
a.读取和写入HTTP头标
b.取得和设置cookies
c.取得路径信息
d.标识HTTP会话