1.字节流如何转换为字符流?
字节输入流可以通过InputStreamReader流转换,InputStreamReader流的构造方法的输入参数就是InputStream
字节输出流可以通过OutputStreamWriter流转换,OutputStreamWriter流的构造方法的输入参数就是OutputStream
2.字节流和字符流的区别
字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件。
字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节或字节数组
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串
3.如何实现对象克隆?
1)实现Cloneable接口,并且重写Object中的clone方法,通过clone方法克隆
2)实现Serializable接口,通过对象流将对象进行序列化和反序列化,实现对象的克隆
4.java中线程通信如何实现
1)共享变量
多个线程共同持有相同的对象或者变量的引用,通过修改引用对象或者变量的状态或者属性来通知其他线程的信息
2)wait/notify机制
多个线程同时持有相同的对象,通过该对象的wait和notify方法相互通信
5.statement和PreparedStatement区别
1)preparedStatement是Statement的子类
2)preparedStatement可以预编译sql语句,执行速度要高于statement
3)preparedStatement可以通过占位符传入参数,可以有效地防止sql注入