Java编程输入流方面的read()方法问题

图1这种while语句里面直接写iStream.read()!=-1 是错误的只能输出:el hn oeyu图2这种写法是正确的,因为多加了temp 会正确输出: hello China I love you想问下为什么出现这种情况?我感觉这两个语句要表达的意思是一样的,都是如果没读取到结尾(即返回-1)就继续往下读,然后输出,请详细分析下为什么有区别?谢谢!

这里涉及到指针的问题,输入流在读取文件的时候用指针来标识从哪里开始读、上一次读到了哪里、读到哪里结束等等,read()方法就是读取到下一个指针位置。你在while判断中调用了read()方法,指针就会右移一个单位,输出语句中又用到了read()方法,指针又要右移一个单位。第一个方法中,每循环一次,指针会右移两个单位,肯定是不行的。所以我们只能用第二种方法,用一个变量记录下read()的值,然后输出变量。
不仅仅在输入流,所有用到指针的地方,都要注意这一点。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答