JAVA中的问题,需要注意

基类和导出类:《java编程思想》 第四版 里有这个概念。基类就是父类,导出类就是子类。子类调用父类构造方法用super()关键字,且放在子类构造函数的第一行。

构造器:也就是我们通常所说的构造法方。其名必须与类名相同。参数列表不同的构造器之间的关系就是方法重载(Overload)。

实列方法:其实就是除了静态方法(类方法)以外的其他方法。

statement对象:

  1. statement对象用于执行不带参数的简单的SQL语句
  2. Prepared Statement 对象用于执行预编译的SQL语句
  3. Callable Statement对象用于执行对存储过程中的调用

线程中的sleep和wait: sleep()是Thread类中的方法,而wait()则是Object类中的方法。 sleep()方法导致了程序暂停,但是他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。 wait()方法会导致线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池(就绪状态)准备获取对象锁进入运行状态。

       注意:wait必须要进行异常捕获。调用wait或者notify方法必须采用当前锁调用,即必须采用synchronized中的对象。

类的加载顺序

  1. 父类静态对象和静态代码块
  2. 子类静态对象和静态代码块
  3. 父类非静态对象和非静态代码块
  4. 父类构造函数
  5. 子类 非静态对象和非静态代码块
  6. 子类构造函数

     其中: 静态块:用static申明,类中静态块按照声明顺序执行,JVM加载类时执行,仅执行一次 。

异常相关:

  • throws用于在方法上声明该方法不需要处理的异常类型,用在方法上后面跟异常类名 可以是多个异常类。
  • throw用于抛出具体异常类的对象,用在方法内 后面跟异常对象只能是一个异常类型实体。
  • try块必须和catch块或和finally同在,不能单独存在,二者必须出现一个。
  • finally块总会执行,不论是否有错误出现.但是若try语句块或会执行的catch语句块使用了JVM系统退出语句,finally块就不会被执行了. 一般我们把关闭资源的代码放在finally里面 保证资源总是能关闭。

 JAVA关键字:Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。

JAVA中的问题,需要注意


                                 注意:true false 是boolean的变量值,是编译器赋予特定含义的,但并不是关键字。

Servlet的生命周期:

  1. 加载:容器通过类加载器使用Servlet类对应的文件来加载Servlet。
  2. 创建:通过调用Servlet的构造函数来创建一个Servlet实例。
  3. 初始化:通过调用Servlet的init()方法来完成初始化工作,这个方法是在Servlet已经被创建,但在向客户端提供服务之前调用
  4. 处理客户请求:Servlet创建后就可以处理请求,当有新的客户端请求时,Web容器都会创建一个新的线程来处理该请求。接着调用Servlet的Service()方法来响应客户端请求(Service方法会根据请求的method属性来调用doGet()或doPost())。
  5. 卸载容器在卸载Servlet之前需要调用destroy()方法,让Servlet释放其占用的资源。

servlet在多线程下其本身并不是线程安全的。

       如果在类中定义成员变量,而在service中根据不同的线程对该成员变量进行更改,那么在并发的时候就会引起错误。最好是在方法中,定义局部变量,而不是类变量或者对象的成员变量。由于方法中的局部变量是在栈中,彼此各自都拥有独立的运行空间而不会互相干扰,因此才做到线程安全。

关于服务器的转发和重定向:转自:https://www.nowcoder.com/profile/485624的回答。

  • redirect:请求重定向:客户端行为,本质上为2次请求,地址栏改变,前一次请求对象消失。举例:你去银行(forward.jsp),结果告诉你少带了东西,你得先去*局办(index.html)临时身份证,这时你就会走出银行,自己前往*局,地址栏变为index.html.
  • forward:请求转发:服务器行为,地址栏不变。举例:你把钱包落在出租车上,你去警察局(forward.jsp)报案,警察局说钱包落在某某公司的出租车上(index.html),这时你不用亲自去找某某公司的出租车,警察局让出租车自己给你送来,你只要在警察局等就行。所以地址栏不变,依然为forward.jsp。

抽象类:

  1. 抽象类中可以构造方法。
  2. 抽象类中可以存在普通属性,方法,静态属性和方法。
  3. 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类。
  4. 抽象类中的抽象方法,需要子类实现。如果子类不实现则子类也需要定义为抽象的。
  5. 抽象类不能被实例化,抽象类和抽象方法必须被abstract修饰。

接口: 

  1. 在接口中有方法的声明,没有方法体。
  2. 在接口中只有常量。因为定义的变量在编译是都会默认加上 public static final 修饰。
  3. 接口中的方法用public修饰。
  4. 接口中没有构造方法。(所以接口不可以继承类)。
  5. 一个类可以实现多个接口。
  6. 接口可以继承接口。
  7. 接口中的方法都需要实现类来实现,如果实现类不能实现接口中的所有方法则该实现类定义为抽象类。