java为什么输出的结果的不一样????????

2024-11-04 16:17:45
推荐回答(4个)
回答1:

import java.io.*;

public class Dome09

{

 public static void main(String[] args)

  throws IOException 

 {

  FileInputStream f = new FileInputStream("Dome09.java");

   byte[] b = new byte[256];

  int i=1,j=0;

  while ((j=f.read(b)) > 0)

  {

   System.out.println("测试发现循环第"+i+"次!");

   i++;

   System.out.println(new String(b,0,j));

  }

 }

}

经过对程序二稍微调整修改,发现程序二执行了两次,即while()只循环两次,所以读了两次,在此可以看出程序一的问题是数组范围不够大,导致第二次读入覆盖掉第一次的。。。所以结果不一样

 

 

执行效果图

 

 


 

回答2:

当然不一样,f.read(b)每读取一个字节,游标自动下移一位, 第一个程序if语句中用了一次,输出语句中又用了一次,相当于读取一个字节游标移动了两次,表现在结果上就是隔一个字节读取一隔字节。

回答3:

System.out.println(new String(b,0,f.read(b)));
System.out.println(new String(b,0,i);

public String(byte[] bytes,
int offset,
int length)
第一个打印的时候,又读了一次。游标向下移动一次
而第二个没有往下读。

回答4:

第一个代码数组会越界。。第二个正常的