黑马程序员技术交流社区

标题: IO流 [打印本页]

作者: 包旭    时间: 2014-12-16 22:27
标题: IO流
/***** HelloWorld.java *****/
import java.io.*;

public class aa
{
  public static void main( String[ ] args )
  {
    byte[] ba = new byte[10];
    InputStream stdin = System.in;//这句貌似上转型
    System.out.println("Please input a string: ");
    try{
        stdin.read(ba);  //我想问下,这句到底是什么意思,详细点,谢咯
    }catch(IOException ie){
         System.out.println();
    }
   
    String s = new String(ba);
    System.out.println("The string read in is "+ s);
  }
}     System.in.read中,好像read这个函数只能一次读一个字符的啊?为什么那句可以得到整个字符串??? 如果改为ba=stdin.read();的话,有是错的耶,各位大哥大姐帮忙解决下,我们平时是将键盘的数据输入时,那么这些数据是在缓冲区,然后才调入内存的,那么read(ba)函数应该是将缓冲区里面的数据转村到ba、这个数组啥,对不?为什么结果是恰好相反,?能不能解释下?

作者: 后悔药    时间: 2014-12-16 22:52
byte[] ba = new byte[10]这是定义一个缓存byte数组, stdin.read(ba)这是将stdin流读到的内容存进ba数组中,现在ba数组已经有内容了,String s = new String(ba)这句话就是将byte数组转化为你看得懂的字符串。stdin.read()这个方法不是这么用的,这方法返回int类型,不是byte数组,如果返回-1表示内容已经读完了。建议楼主多看看IO这块知识
作者: 包旭    时间: 2014-12-16 23:03
后悔药 发表于 2014-12-16 22:52
byte[] ba = new byte[10]这是定义一个缓存byte数组, stdin.read(ba)这是将stdin流读到的内容存进ba数组 ...

恩恩
                                   




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2