20.04.29

1.

  • Java Applet在被浏览器加载的时候首先被执行且在applet整个生命周期中被运行一次的方法——init(),初始化方法,自然只有一次。
  • Applet 是一种在 Web 环境下,运行于客户端的Java程序组件。Applet
    必须运行于某个特定的“容器”,这个容器可以是浏览器本身,也可以是通过各种插件,或者包括支持 Applet的移动设备在内的其他各种程序来运行。与一般的Java应用程序不同,Applet 不是通过 main方法来运行的。Applet运行之前,先调用 Init() 方法,然后调用 start() 方法,最后调用 paint() 方法。

2.

collection类型的集合(ArrayList,LinkedList)只能装入对象类型的数据
instanceof关键字,instanceof执行时类似利用java反射机制,识别对象信息。

3.

类中静态语句块仅在类加载时被执行一次 ,静态代码块优先于主方法,且只执行一次

4.

  • 虚拟机中没有泛型,只有普通类和普通方法
  • 所有泛型类的类型参数在编译时都会被擦除
  • 创建泛型对象时请指明类型,让编译器尽早的做参数检查
  • 泛型的类型擦除机制意味着不能在运行时动态获取List中T的实际类型

5.

结构型模式中最体现扩展性的模式——装饰模式

6.

关于抽象类 (abstruct)
JDK 1.8以前,抽象类的方法默认访问权限为protected
JDK 1.8时,抽象类的方法默认访问权限变为default

关于接口 (interface)
JDK 1.8以前,接口中的方法必须是public的
JDK 1.8时,接口中的方法可以是public的,也可以是default的
JDK 1.9时,接口中的方法可以是private的

7.

20.04.29

  1. 静态语句块中x为局部变量,静态代码快执行完后变被释放,不影响静态变量x的值 ;
  2. x和y为静态变量,默认初始值为0,属于当前类,其值得改变会影响整个类运行;
  3. java中自增操作非原子性的 。

main方法中:
执行x–后 x=-1
调用myMethod方法,x执行x++结果为-1(后++),但x=0,++x结果1,x=1 ,则y=0
x+y+ ++x,先执行x+y,结果为1,执行++x结果为2,得到最终结果为3

java初始化的加载顺序为:
父类静态成员变量 父类静态代码块 子类静态成员变量 子类静态代码块 父类非静态成员变量,父类非静态代码块,父类构造函数,子类非静态成员变量,子类非静态代码块,子类构造函数

8.

成员变量,存放在堆区;
方法中的局部变量,存放在栈区 ;

  • 方法区:又叫静态存储区,存放class文件和静态数据,线程共享;
  • 堆区:只存放类对象,线程共享;
  • 栈区:存放方法局部变量,基本类型变量区、执行环境上下文、操作指令区,线程不共享;

9.

ArrayList(数组)和LinkedList (链表)均实现了List接口;
ArrayList访问速度比LinkedList快;
HashMap实现Map接口,它允许任何类型的键和值对象,并允许将NULL用作键或值。

10.

  • 常用的servlet包的名称:javax.servlet、javax.servlet.http

  • javax.servlet 包中包含了 7 个接口 ,3 个类和 2 个异常类 , 它们分别是 :

    接口: 是RequestDispatcher, Servlet, ServletConfig, ServletContext, ServletRequest, ServletResponse和 SingleThreadModel
    类: GenericServlet,ServletInputStream 和 ServletOutputStream
    异常类: ServletException 和 UnavailableException