读出来的数据是什么类型的

读出来的数据是什么类型的

为什么读出来的数据需要强制转换????

(char)fis.read()

还有既然输入是50a,是三个元素 ,读取的时候为什么不会判断成为5是一个字节,0a是一个字节?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
慕布斯645313 2018-11-15 17:42:52

1、每次是写入的是一个字节,50和a是以两个字节的形式存进去的。
2、可以write进汉字去,一个汉字占用两个字节,而一个char类型的内存正好有两个字节的空间,所以可以存汉字。独处的时候会变成乱码。
3、因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte,有可能在读到中间的时候遇到111111111,那么这11111111是byte类型的-1,我们的程序是遇到-1就会停止不读了,后面的数据就读不到了,所以在读取的时候用int类型接收,如果11111111会在其前面补上24个0凑足4个字节,那么byte类型的-1就变成int类型的255了这样可以保证整个数据读完,而结束标记的-1就是int类型

4、这个n代表是读出来的数字数,这是方法就是这么设计的。

http://img1.sycdn.imooc.com//climg/5bed3f8c0001a74907720283.jpg

  • 提问者 慕移动8576453 #1
    如果读出来的n代表着数字数量,那么为什么老师使用了 n=fos.read(); system.out.println((char)n);来打印输出????
    2018-11-16 18:48:35
  • 提问者 慕移动8576453 #2
    或者这么说,如果没有调用read(byte[]b)的方法的话 那么读出来的数据储存到哪里去了?????
    2018-11-16 19:03:54
  • 慕布斯645313 回复 提问者 慕移动8576453 #3
    emm...读出来的数据是放在内存中等待去操作的。
    2018-11-16 19:17:22
chrismorgen 2018-11-15 14:58:07

你好同学,如下图所示,read方法返回的数据类型是int类型,所以要转为char类型,否则就不会输出插入的字符a了。

http://img1.sycdn.imooc.com//climg/5bed13be0001326406200093.jpg

这个read方法是把数据读到数组b中,返回值表示实际读取的字节数,如果是没有参数读的是整数,祝学习愉快~

  • 提问者 慕移动8576453 #1
    我的意思是输入50, 再输入a,结果就会把50和a当做两个分离开的元素存进去对吗?还是存进去以后会合并成一个元素?还有我的疑问是可不可以write汉字进去?,那么读出来又会怎么样。还有一个问题 返回值是一个int类型,他代表的到底是什么?代表着读出来的元素的转换成2进制后的一个数字吗?如果是这样的话,在讲到复制那节课当中讲到一个复制文件会大于源文件,这时候的解决办法是调用wirte(b,0,n)这个方法,这个n却又是代表着读出来的数字的数量,这是为什么
    2018-11-15 15:38:40
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师