黑马程序员技术交流社区
标题:
FileReader.read() 问题
[打印本页]
作者:
刘晓康
时间:
2012-4-1 11:41
标题:
FileReader.read() 问题
FileReader fr=new FileReader("D:\\heima.txt");
int byt=fr.read();
System.out.println(byt);
read读取的是一个字节,那为什么read返回的是int类型的,而不是byte类型的?
作者:
如梦初醒
时间:
2012-4-1 11:44
因为read读取的是二进制数据
作者:
李震 李震 李震
时间:
2012-4-1 12:07
read():从输入流中读取数据的下一个字节,返回0到255范围内的int字节值。如果因为已经到达尾流而没有可用的字节,则返回-1.在输入数据可用、检测流末尾或抛出异常前,此方法一直阻塞。
作者:
安浦鑫
时间:
2012-4-1 12:22
read方法以-1作为末尾的标志,如果你用byte作为返回值 无符号取值范围0-255 你取不到-1;有符号取值范围-128 ~ 127 ,127-255的部分表示不了。所以需要用INT来作为返回值
作者:
izwj
时间:
2012-4-1 12:39
read
public int read()
读取单个字符。在字符可用、发生 I/O 错误或者已到达流的末尾前,此方法一直阻塞。
用于支持高效的单字符输入的子类应重写此方法。
返回:
作为整数读取的字符,
范围在 0 到 65535 之间
(0x00-0xffff),如果已到达流的末尾,则返回 -1
作者:
代臣
时间:
2012-4-1 12:49
本帖最后由 代臣 于 2012-4-1 12:57 编辑
read读取单个字符,不是一个字节。
read()方法的源代码(查看jdk安装目录下src.rar文件):
public int read() throws IOException {
char cb[] = new char[1];
if (read(cb, 0, 1) == -1)
return -1;
else
return cb[0];//返回的是char类型的值,而方法接收返回值类型为int,会自动提升为int类型。
}
java语言规定:当一个算数表达式中包含多个基本数据类型的值时,整个算数表达式的数据类型将发生自动提升。
自动提升规则如下:
1,所有byte型、short型、char型将被提升到int型;
2,数据类型的自动提升与表达式处在的等级有关,下面是我画的图:
希望对你有用。
类型级别.JPG
(6.69 KB, 下载次数: 149)
下载附件
2012-4-1 12:57 上传
作者:
代臣
时间:
2012-4-1 12:49
本帖最后由 代臣 于 2012-4-1 12:56 编辑
read读取单个字符,不是一个字节。
read()方法的源代码(查看jdk安装目录下src.rar文件):
public int read() throws IOException {
char cb[] = new char[1];
if (read(cb, 0, 1) == -1)
return -1;
else
return cb[0];//返回的是char类型的值,而方法接收返回值类型为int,会自动提升为int类型。
}
java语言规定:当一个算数表达式中包含多个基本数据类型的值时,整个算数表达式的数据类型将发生自动提升。
自动提升规则如下:
1,所有byte型、short型、char型将被提升到int型;
2,数据类型的自动提升与表达式处在的等级有关,下面是我画的图:
希望对你有用。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2