目录
1.序列化SerialVesionUID的作用
1.是能够序列化的前提条件
2.也是能够反序列化的前提,当一个Java对象以流的形式被传输出去或保存到磁盘上,能够将其再转换为一个Java的对象的重要条件就是:字节流中的序列化ID和本地实体类的序列化ID一致才能反序列化
2.枚举类的使用
1.类的对象只有有限个,并且是确定的
2.定义一组常量时,建议使用枚举类
3.若枚举类只有一个对象,可以使用单例模式的实现方式
4.枚举类的自定义方式:
使用enum关键字定义
对象使用private final形式
私有化类的构造器,并为对象赋值
3.什么是注解
注解是jdk5.0新增的功能,是代码中的特殊标记。可以在编译,类加载,运行时读取,并执行注解相对应的处理。
4.Java提供的四种元注解是哪些?有什么作用
1.Java一共提供了四种元注解:@Target、@Retention、@Documented、@Inherited
2.元注解:用来修饰其他注解的注解
3.@Retention:定义注解的生命周期;取值有:
SOURCE:在源文件中有效
CLASS:在class文件中有效(默认)
RUNTIME:在运行时有效
只有值为RUNTIME才能通过反射获取到;并且编译后能够保存到字节码文件中,运行时能够加载到内存中。
4.@Target:指明被修饰的注解能够用于修饰哪些结构(类、构造器等)
5.@Documented:指定被修饰的Annotation被Javadoc工具提取为文档;默认情况下,javadoc工具不会将注解文档化,加上@Documented后才会被修饰的注解文档化
6.@Inherited:被修饰的Annotation具有继承性
5.什么是程序?什么是进程?什么是线程?
程序:完成特定任务、用某种语言编写的一组指令的集合
进程:正在运行中的一个程序;进程是资源分配的单位
线程:一个程序内部的一条执行路径;线程是调度和执行的单位
6.什么是并行?什么是并发?
并行:多个CPU可以执行多个任务
并发:一个CPU采取时间片的方式同时执行多个任务
7.一个Java程序java.exe至少有几个线程?
三个:main()主线程
gc()垃圾回收线程
异常处理线程
8.创建多线程有几种方式?
四种:继承Thread类方式
实现Runnable接口
实现Callable接口
线程池创建
9.继承Thread类方式创建多线程
1.Thread类实际上也实现了Runnable接口
2.创建步骤:
- 创建一个继承于Thread类的子类
- 重写thread类的run()方法
- 创建thread类的子类的对象
- 通过此对象调用start()方法
注意:start()的作用:启动当前线程;调用当前线程的run()方法
public class MyThreadTest {
public static void main(String[] args) {
//3.创建Thread类的子类的对象
Thread1 thread1 = new Thread1();
//4.通过该对象调用start()方法
thread1.start();
}
}
//1.创建一个继承了Thread类的子类
class Thread1 extends Thread {
//2.重写Thread类的run()方法
@Override
public void run() {
System.out.println("线程实现方式一:继承Thread类方式");
}
}
10.实现Runnable接口的方式创建多线程
创建步骤:
- 创建一个实现了Runnable接口的类
- 实现类去实现Runnable中的抽象方法run
- 创建实现类的对象
- 将该对象作为参数传递到Thread类的构造器中,创建Thread类的对象
- 通过Thread类的对象调用start()方法
public class MyThreadTest { public static void main(String[] args) { //3.创建该实现类的对象 Thread2 thread2 = new Thread2(); //4.将该对象作为参数传递到Thread类的构造器中,创建Thread类的对象 Thread thread3 = new Thread(thread2); //5.通过Thread类的对象调用start()方法 thread3.start(); } } //1.创建一个实现了Runnable接口的实现类 class Thread2 implements Runnable{ //2.重写run()方法 @Override public void run() { System.out.println("线程实现方式二:实现Runnable接口方式"); } }