我看到有这么一个语句:
……
BufferedDeader buf_reader=new BufferedReader(new InputStreamReader(System.in));我是这样想的:
System.in 创建一个实例化了的 InputStreamReader 对象,然后,再由这个实例化的InputStreamReader 对象 去 实例化一个 BufferedReader 对象 。
System.in 是不是请求输入的语句,它的功能应该是指示系统接受输入的字符串吧,
用获得的输入,去实例化一个InputStreamReader对象,当然,这个时候应该分配内存了,
接着,new InputStreamReader(System.in)这个整体产生的实例化对象,再去实例化一个BufferedReader对象…………刚刚开始学习java,难免会理解错误,所以想请大家帮忙确认或更正一下。
或者有哪位可以另外的详细解释一次!不胜感激!毕竟直接涉及到对java语言的理解!
……
BufferedDeader buf_reader=new BufferedReader(new InputStreamReader(System.in));我是这样想的:
System.in 创建一个实例化了的 InputStreamReader 对象,然后,再由这个实例化的InputStreamReader 对象 去 实例化一个 BufferedReader 对象 。
System.in 是不是请求输入的语句,它的功能应该是指示系统接受输入的字符串吧,
用获得的输入,去实例化一个InputStreamReader对象,当然,这个时候应该分配内存了,
接着,new InputStreamReader(System.in)这个整体产生的实例化对象,再去实例化一个BufferedReader对象…………刚刚开始学习java,难免会理解错误,所以想请大家帮忙确认或更正一下。
或者有哪位可以另外的详细解释一次!不胜感激!毕竟直接涉及到对java语言的理解!
BufferedReader是提供了缓冲功能的字符流(reader)
Reader和Stream通过InputStreamReader进行连接,InputSteamReader充当了桥的角色这样也就可以对steam使用reader的功能,比如readline()
而且这本身就是一种模式-装饰模式,具体可以看看这方面的资料就知道这些,不知解释得对不对
----------------------------------------------No! 不是用获得的输入去实例化...,而用System.in对象本身去实例化。
只有调用了read()方法,才会获得输入。System.in是一个InputStream对象,虽然可以读取标准输入,但是它是面向字节,而不是面向Unicode字符的,所以用InputStreamReader类来对它进行“改写(Adapting)”,它是用来把一个InputStream变成一个Reader的。楼主可以去了解一下Decorator模式,java的io库基本上都是用Decorator模式写的。