一个输入流要read之后返回-1,是当他遇到文件结束符EOF的时候。而System.in这个流一直未遇到文件结束符,所以他会认为此流中还会有数据,于是就阻塞了。所以要想System.in.read()返回-1的话,需要给他一个文件结束符。windows下控制台中文件结束符的表示为,在 空行 处按ctrl+z,linux中则为ctrl+d还有要注意,有些编译器的控制台不能够打出文件结束符,所以应该在操作系统的控制台中进行测试