面试题02

字节流和字符流的区别是什么

Ref疯狂java讲义第5版 p683

字节流和字符流的用法几乎完全一样,区别在于字节流和字符流所操作的数据单元不一样——字节流操作的是8位(bit)的字节,而字符流操作的数据单元是16位的字符。

字节流主要以InputStream和OutputStream作为基类,字符流主要以Reader和Writer作为基类。

Ref疯狂java讲义第5版 p690

通常来说,字节流的功能比字符流强大,因为计算机里所有的数据都是二进制的,而字节流可以处理所有的二进制文件,但问题是如果用字节流处理文本文件,则需要使用合适的方式吧这些字符转换成字符,这就增加了编程的复杂度。所以通常有一个规则:如果进行输入/输出的内容是文本内容,则应该考虑使用字符流;如果进行输入/输出的内容是二进制内容(如上传下载电影、音乐等非文本的文件),则应考虑使用字节流;

计算机的文件常被分为文本文件和二进制文件两大类——所有能被记事本打开并看到其中字符的文件即为文本文件;反之问二进制文件。但实质是:计算机了的所有文件都是二进制文件,文本文件只是二进制文件的特例。当二进制文件里的内容恰好能被正常解析成字符时,则该二进制文件就变成了文本文件。

Java中throw和throws的区别

Throw和throws是java的异常处理机制中的5个关键字(try、catch、finally、throw、throws)中的两个。Throws主要在方法签名中使用,用于声明该方法可能抛出的异常;而throws用于抛出一个实际的异常,throw可以单独作为语句使用,抛出一个具体的异常。

Throws只能在方法签名中使用,它可以声明抛出多个异常类,多个一场类之间用逗号隔开。Throws抛出异常的思路是:当前方法不知道该如何处理这种类型的异常,因此将该异常交由(上一级)该方法的调用者处理。如果main方法也不知道该如何处理这种异常,也可以使用throws将该异常交给JVM。JVM对此的处理方法是,打印异常的堆栈信息并终止程序的运行。

Throw表示程序自行抛出异常。异常是一种主观的说法,因此很多时候需要根据业务需求决定是否要抛出异常,比如说如果陈旭中的数据、执行与既定的业务需求不符,这就算是一个异常,可是java并不知道这个是“异常”,需要抛出,因此需要手动抛出这个异常。Throw抛出的不是异常类,而是一个异常实例,并且每次只能抛出一个异常实例。

原文地址:https://www.cnblogs.com/leejunwei/p/mianshiti02.html