三个最主要的方法:
例子1:str=中华人民共和国
首先offset++变为1,进入1,这时dataLen=7,接着到3,读取到“中”,bufferIndex=1,接着进入6,进入push方法,此时length=0,start=offset-1=0,length++变为1,接着进入flush方法termAtt=buffer[0-1]=“中”,offsetAtt=[0-1]。第二次offset++变为2,bufferIndex=1<dataLen=7,进入3,读取到“国”,bufferIndex=2,接着流程如上。直到bufferIndex=dataLen再次进入1,由于input已经在第一次全部读取出来,此时dataLen=-1,直接返回。
例子2:str=abc中华人民共和国
首先offset++变为1,进入1,这时dataLen=10,接着到3,读取到“a”,bufferIndex=1,接着进入4,进入push方法, 此时length=0,start=offset-1=0,length++变为1,继续以上操作直到读取到“中”,此时bufferIndex=4,offset=4,start=0,length=3(由于此时并没有执行push方法),这时候bufferIndex和offset递减为3并且将abc返回出去,接下来流程如例子1.