day19 含 异常处理 File
- Andriod客户端处理异常,一般用try{} catch() {}
- ee后端开发,一般将问题从底层向上抛。
- try后面如果跟多个异常,那么需要将小的异常放在前面,如果将大的异常放在前面,那么根据多态原理,会将小的异常接收,那么小的异常就没有意义了。
- 运行时异常就是程序员犯的错误。编译时异常可以理解为未雨绸缪异常,就是指在编译的时候可能发生的错误,比如文件找不到,这时候就需要提前处理,如果不处理,编译无法通过。
- finally是try与语句的一个语句体,不能单独使用,用来释放资源,除非在执行finally语句前退出虚拟机,否则finally语句一定会执行。
- 异常注意事项:
- 子类重写父类方法时,子类只能抛出与父类相同的异常,或父类异常的子类。(解释:子类的意义是子类比父类更强大)
- 如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws。
- 如何使用异常处理:
- 原则:如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,用throws;
- 区别:后续程序需要运行,用try;后续程序不需要运行,用throws
- windows下所有文件默认可读,java将文件设置为不可读无效。java程序可以设置文件是否可写。
- File类中方法:
file.creatNewFile()
file.mkdir()
day20 IO流
- FileOutputStream在创建对象的时候,如果有没有事先创建该文件,会自动创建文件。如果已经有该文件了,会将这个文件内容清空(不是删除文件再重新创建)。
day21 字符流
- 程序读取或者写入一段间文件的时候,可以用字符流。拷贝文件不推荐用字符流,因为需要在字节与字符之间转换。
- 字符流(FileWriter)写出文件内容的时候,可以直接将字符串写出,不需要转换。
- 带缓冲区的字符流(BufferedReader、BufferedWriter)可以将字符流对象封装,提高效率。
- 装饰设计模式的好处是,代码耦合性不强,被装饰类的变化与装饰类的变化无关。
- FileReader、FileWriter使用默认码表操作文件,如果要用指定码表操作文件,可以使用 InputStreamReader、OutputStreamWriter;
day24 多线程
- 并行:指的是多任务同时运行;并发:指的是多任务交替运行。
- 当多段代码并发,有多段代码块同时执行时,我们希望某一段代码执行的过程中CPU不要切换到其它线程工作,这时就需要同步。
- 同步代码块用synchronized关键字。
- 同步方法只需要在方法上加上synchronized关键字即可。
- 非静态的同步方法的锁对象是this,静态的同步方法的锁对象是该类的字节码文件。