#一、javaSE复习
##(一)、抽象类(abstract)
- 出现父类方法不确定问题,定义为抽象方法,由子类实现
- 当一个类存在抽象方法时,需要将该类定义为抽象类
- 不存在方法体(无{})
- 抽象类不能实例化,抽象类可以没有抽象方法,但是有抽象方法,类一定要为抽象类
- abstract只用于修饰类和方法
- 继承了抽象类的类必须实现抽象类中的所有抽象方法,除非它自己也声明为抽象类
- abstract不能与 private,final,static 同用
##(二)、接口(interface)
- interface 接口名
- class 类名 implements 接口名
- 接口中的方法都是 public 的抽象方法,不需要用 abstract 修饰,若要定义有方法体的方法,需要用 default 或 static 修饰
- 接口不能实例化
- 一个类可以同时实现多个接口
- 接口中的属性只能是 final 的,而且是 public static final 的
- 接口可以继承接口
- 接口的修饰符和类一致(public 或 默认)
- 多态特性(与类相似)
##(三)、内部类
-
局部内部类
(1). 定义在外部类的局部位置,通常在方法
(2). 不能添加访问修饰符,可用 final 修饰
(3). 作用域:仅在定义它的代码块或方法中
(4). 内部访问外部:直接访问
(5). 外部访问内部:创建对象
(6). 访问重名成员时,遵循就近原则,访问外部(外部类名.this.成员) -
匿名内部类(类、内部、无名、对象)
(1). 适用有的类只使用一次的情况
(2). 匿名内部类仅可使用一次,但返回的对象实例可重复使用
(3). new 接口或类 {};
(4). 直接用作方法传参参数 -
成员内部类
(1). 区分局部内部类,不放在方法中
(2). 定义在外部类的成员位置上
(3). 可以添加任意修饰符 -
静态内部类(static)
(1). static class
(2). 只能访问静态的成员
(3). 可任加修饰符
(4). 作用域:整个类体
##(四)枚举(enum)
- 枚举属于一种特殊的类,里面包含一组有限的特定的对象
- 构造器私有化,去 set 方法, 创建固定的对象
- 无enum实现:public final static 类名 实例对象名 = new 类名(实参列表);
- 使用enum实现:
(1). 使用关键字 enum 替代 class(继承Enum类)
(2). 如何定义:实例对象名(实参列表);
(3). 多个时:实例对象名(实参列表),实例对象名(实参列表),…;
(4). 要求将定义写在最前面
(5). 如果使用无参构造器创建对象,可以只写实例对象名 - Enum 类常用方法
- enum 类不能继承类 ,可以实现接口
##(五)注解
-
Annotation
(1). @interface:表示一个注解类
(2). @Override:判断重写,作用于方法
(3). @Deprecated:修饰某个元素,表示该元素已经过时
(4). @SuppreWarnings:抑制警告信息,作用范围与放置位置相关(语句、方法、类前面) -
元 Annotation (修饰注解的注解,称为元注解)
(1). @Target:规定注解的修饰范围
(2). @Retention:指定注解能保存多长时间
(3). @Documented:被其修饰的注解将被javadoc工具提取成文档,即在生成文档时,可以看到该注解
##(六)异常(Exception)
-
快捷键(ctrl + alt + T)
-
运行时异常和编译时异常
-
RuntimeException
(1). NullPointerException
(2). ClassCastException
(3). ArithmeticException
(4). ArrayIndexOutOfBoundsException
(5). ClassCastException
(6). NumberFormatException -
异常处理
(1). try-catch- finally
try{可能出现异常的代码}
catch(Exception e){捕获到的异常}
finally{//不管try代码块是否发生异常,始终要执行finally}
系统将异常封装成 Exception 对象 e 传递给 catch ,没有发生异常,catch不执行。 异常发生后进入 catch 块,后面的代码不再执行
可以存在多个 catch 语句捕获不同的异常,要求子类异常在前,父类在后,如果发生异常,只会匹配一个 catch。
(2). throws
不处理,向上抛出异常
JVM最高
运行时异常,默认采用 throws 处理
子类重写父类方法,抛出异常应为父类抛出异常的子类或同类
(3). 编译异常必须处理
当调用的方法 throws 编译异常时,必须用两种方法的一种处理。因为运行异常有默认处理机制,可以不用处理。 -
自定义异常
(1). 一般继承 RuntimeException ,拥有默认处理机制
##(七)常用类
-
包装类(Wrapper)
(1). 装箱:基本类型 -> 包装类型;反之为拆箱
(2). 自动装箱底层采用 valueof() 方法 -
包装类 -> String
(1). 包装类 + “”
(2). 包装类.toString()
(3). String.valueOf(包装类) -
String -> 包装类
(1). 包装类.parse包装类(String)
(2). new 包装类(String) -
String
(1). 采用 Unicode 编码
(2). 属性 private final char value[] 用于存放字符串内容,地址不可修改,地址内容可以修改
(3). String name = “…” 直接指向常量池
String name = new String() 指向堆中的对象,对象中的 value[] 指向常量池
(4). 复用率高
(5). 需要大量修改时,不适用 -
StringBuffer
(1). 有属性 char[] value ,但不是 final,存放在堆中
(2). 常用方法
(3). 线程安全 -
StringBuilder
(1). 存在线程安全问题
(2). 最高效
#二、数据库
##(一)、数据库安全复习