为什么这两个同样的Java程序输出结果不一样

2025-01-25 03:37:04
推荐回答(4个)
回答1:

原因是这里:
while((rea.read())!=-1){
date[foot++]=(byte) rea.read();
}
前面的是单字节读取,存储每一个字节。
后面的这个也是单字节读取,但是每次读取两次,而每次保存的是第二次读取的值。

InputStream你去仔细看看它的三种读取数据流的方法,就明白了。

while循环中每次读取的值没有保存到date中。

回答2:

比对了你的代码,不同的地方见下面代码

第一个

    int temp=0;
    while((temp=rea.read())!=-1){
        date[foot++]=(byte) temp;
    }

第二个

    while((rea.read())!=-1){
        date[foot++]=(byte) rea.read();
    }

第一个类里只调用了一次rea.read(),用于判断和赋值,而第二个类里调用了两次rea.read(),一个用于判断,一个用于赋值,如果你文件内容小于byte[1024]的长度,那么第二次read将返回空

回答3:

原因是这里:
while((rea.read())!=-1){
date[foot++]=(byte) rea.read();
}

楼上说得是没错,但是原因就属于瞎扯淡了,rea.read()这个方法,第一个中,你是每一个都读到了,而第二个中,你是每次取第二次读的值赋值的,相当于100个数每次读偶数;说白了,rea.read()这个方法你每调用一次,他就读取一次

回答4:

结果输出的是什么?