站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题什么时候使用PushbackReader ?

什么时候使用PushbackReader ?

摘要: 什么时候使用PushbackReader ?


如题,另外PushbackReader对象的 read() 和 unread() 内部是如何实现 ?


需要pushback字符的时候,例如,一个scanner。
至于unRead是怎么实现的,楼主可以看看源码去,简单的,可以用一个stack来实现。


pushback到底是一个什么样的概念,那些java文档能看个大概,但不是很明白。
pushback字符到底是个什么样的过程,对不起了,我是菜鸟了,请指点指点吧!


假如当前pushbackreader对象是用来读取文件中信息,那么究竟对这些信息做何处理的时候才用到pushbackreader对象呢?


我不知道你学过编译原理没有,如果你学过,那么我觉得我说的已经够清楚了。
如果你没学过,我就多废话几句
编译原理的一个重要的组成部分叫做词法分析器,就是我上面提到的scanner。对于词法分析程序来说,输入就是源代码,输出就是一个一个的Token(想不出来合适的词),通常词法分析器会一个字符一个字符读取,然后将将这些字符根据一定的规则组成token的序列。有些时候,scanner需要超前读下一个字符才能判断当前的token是否已经结束。例如,int abc=5;这样一个语句,词法分析器要读到=这个字符的时候才能确定abc是一个id,而不是"abc=",这样=已经从输入流中读出来了,但是=又不属于当前的Token,所以要把这个=退回去,这时就要用到pushback。举例不一定合适,明白意思就好。
第二个问题,pushback字符是个怎么样的过程
这个问题很简单,可以很容易想出不少的实现方式
1,可以简单的将已经读出的字符push到一个堆栈中,如果堆栈中有内容的话,那么再读字符的话就从堆栈中读取。否则从原始输入流中读取。可以看出,这样,其实并没有真正的pushback。
2,第二种情况举个读文件的例子,在读文件的时候,肯定要维护一个当前位置的指针,要pushback的话,仅仅需要向前移动一下指针即可。


↑返回目录
前一篇: 关于Context 类的问题
后一篇: Random随机生成1-20000个不相同的数字?