1 序列化、反序列化

序列化是将数据结构或对象转换成一种可存储或可传输格式的过程,通常涉及将数据转换成字节流或类似的格式,以便在不同平台和编程语言之间进行传输和交换。反序列化是将序列化后的数据重新还原成原始的数据结构或对象,从文件、网络数据或数据库中读取序列化的数据,并将其转换回原始形式,以便在程序中进行使用和操作。这两个概念在编程中与数据存储、传输和处理密切相关,为开发工作带来便利1

2 异常

image.png|500

2.1 Exception和Error

  • Exception :程序本身可以处理的异常,可以通过 catch 来进行捕获。Exception 又可以分为 Checked Exception (受检查异常,必须处理) 和 Unchecked Exception (不受检查异常,可以不处理)。

  • ErrorError 属于程序无法处理的错误

RuntimeException 及其子类都统称为非受检查异常,常见的有(建议记下来,日常开发中会经常用到):

  • NullPointerException(空指针错误)

  • IllegalArgumentException(参数错误比如方法入参类型错误)

  • NumberFormatException(字符串转换为数字格式错误,IllegalArgumentException的子类,s包含非数字字符,或者为null)

  • ArrayIndexOutOfBoundsException(数组越界错误)

  • ClassCastException(类型转换错误)

  • ArithmeticException(算术错误)

  • SecurityException (安全错误比如权限不够)

  • UnsupportedOperationException(不支持的操作错误比如重复创建同一用户)

2.1.1 如何使用 try-with-resources 代替try-catch-finally

//读取文本文件的内容
Scanner scanner = null;
try {
scanner = new Scanner(new File("D://read.txt"));
while (scanner.hasNext()) {
System.out.println(scanner.nextLine());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (scanner != null) {
scanner.close();
}
}

使用 Java 7 之后的 try-with-resources 语句改造上面的代码:

try (Scanner scanner = new Scanner(new File("test.txt"))) {
while (scanner.hasNext()) {
System.out.println(scanner.nextLine());
}
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
}

3 泛型

在 java 中泛型只是一个占位符,必须在传递类型后才能使用。类在实例化时才能真正的传递类型参数,由于静态方法的加载先于类的实例化,也就是说类中的泛型还没有传递真正的类型参数,静态的方法的加载就已经完成了,所以静态泛型方法是没有办法使用类上声明的泛型的。只能使用自己声明的 <E>

泛型一般有三种使用方式:泛型类泛型接口泛型方法