日期:2014-05-20  浏览次数:20584 次

大家都来看看!!!!
public   static   void   main(String   args[])   throws   Exception
{
int   data   ;

data=System.in.read();
   
       
System.out.write(data);

System.out.flush();}

public   static   void   main(String   args[])   throws   Exception
              {
                        while((data=System.in.read())!=-1)
{
    System.out.write(data);
  }    
}
我有个疑问一直搞不明白:假如只输入一个字符,运行第一个的时候就需要调用flush()按回车后才能及时把这个字符显示出来;而在第二个运行是也只输入一个字符按回车而没有调用flush()就可以立即把输入的打印出来!!哪位哥哥能告诉俺这是为什么啊!!
还有一个问题就是 JAVA虚拟机才用的是unicode!一个字符站两个字节!而in.read()只能读一个字节的数据!但最后却还能把字母打印出来???????
望各位大侠不吝赐教!!                  



------解决方案--------------------
public void write(int b) {
try {
synchronized (this) {
ensureOpen();
out.write(b);
if ((b == '\n ') && autoFlush)
out.flush();
}
}
这是write那个方法
------解决方案--------------------
下回直接研究下JDK源码就知道了.
------解决方案--------------------
mark
------解决方案--------------------
????????????????????????????????????????????????????????????????????????????????