关于多态的问题 InputStreamReader isr = new InputStreamReader(System.in)这句话有多态存在,不好理解。各位大哥,还请开导开导。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的理解是:InputStreamReader接受一个InputStream的参数,具体根据参数的具体类型从相应的地方读取数据。 我觉得是有重载吧?以下是InputStreamReader类的构造方法摘要:InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader。 InputStreamReader(InputStream in, Charset cs) 创建使用给定字符集的 InputStreamReader。 InputStreamReader(InputStream in, CharsetDecoder dec) 创建使用给定字符集解码器的 InputStreamReader。 InputStreamReader(InputStream in, String charsetName) 创建使用指定字符集的 InputStreamReader。 如果是多态的话就是说其继承自java.io.Reader InputStreamReader(System.in)InputStreamReader(InputStream in)参数是InputStream类型的。System.in返回值是InputStream类型的。这里好像没什么父类,子类的。 在构造InputStreamReader时提供4种构造方式,分别如下:InputStreamReader(InputStream)InputStreamReader(InputStream, String)InputStreamReader(InputStream, Charset)InputStreamReader(InputStream, CharsetDecoder)其中红色标注的便是你目前所使用的方式。又因为System.in是System类中的一个静态的InputStream抽象类型的成员变量,大家都知道,接口和抽象类都是无法构造的。同时在类System的源码显示:in,err,及out成员一开始都为null值。但为了能够在程序中正常使用相关的该类成员,必须在该类加载进jvm时,通过调用某方法进行初始化工作(此方法为initializeSystemClass()),因为,此时的InputStream实例对象则是由jvm调用initializeSystemClass方法来构造的。基于此,便有了多态现象。 不知道你不明白的是哪一点。我碰到流也晕。InputStreamReader 和InputStream是两个类。System.in的类型是InputSteam,如果打印它,显示属于java.io.BufferedInputStream估计就像5楼说的一样,jvm完成了这个过程。 现在的问题应该就是System.in 和InputStrea的关系弄清楚,应该就搞清楚了。 这个可以查阅java api 中的InputStreamReader中的方法 java.io包下的InputStreamReader类的一个构造方法为:public InputStreamReader(InputStream in),要求参数为InputStream型。 java.lang包下的System类的public static final InputStream in,是System类的一个常量,但返回类型为InputStream。System.in主要用于读取键盘输入。 我知道的就这些,希望对你有帮助。 关于内部类的继承问题 求字数统计代码 如何实现有序的字符串序列? 请问怎么用JAVA来做一个网络上的下载工具 基础题目: Reader and Writer为什么要用int类型来存取读写的char类型? 高手请帮忙(有关继承的问题) 修改classpath等环境变量需要重起吗? 谁知道程序从jdk1.2移到jdk1.4要注意那些地方 jTable中按键的控制问题,各位大虾给个源码 今天学了线程,于是写了个生产者消费者程序,运行时出现不想要的结果,求帮忙看下具体哪里出了问题。 c/s压力测试一般用什么工具 Vector中存放Vector来实现动态二维数组的问题
InputStreamReader接受一个InputStream的参数,具体根据参数的具体类型从相应的地方读取数据。
InputStreamReader(InputStream in)
创建一个使用默认字符集的 InputStreamReader。
InputStreamReader(InputStream in, Charset cs)
创建使用给定字符集的 InputStreamReader。
InputStreamReader(InputStream in, CharsetDecoder dec)
创建使用给定字符集解码器的 InputStreamReader。
InputStreamReader(InputStream in, String charsetName)
创建使用指定字符集的 InputStreamReader。 如果是多态的话就是说其继承自java.io.Reader
InputStreamReader(InputStream in)参数是InputStream类型的。System.in返回值是InputStream类型的。这里好像没什么父类,子类的。
InputStreamReader(InputStream)
InputStreamReader(InputStream, String)
InputStreamReader(InputStream, Charset)
InputStreamReader(InputStream, CharsetDecoder)
其中红色标注的便是你目前所使用的方式。
又因为System.in是System类中的一个静态的InputStream抽象类型的成员变量,大家都知道,接口和抽象类都是无法构造的。同时在类System的源码显示:in,err,及out成员一开始都为null值。但为了能够在程序中正常使用相关的该类成员,必须在该类加载进jvm时,通过调用某方法进行初始化工作(此方法为initializeSystemClass()),因为,此时的InputStream实例对象则是由jvm调用initializeSystemClass方法来构造的。
基于此,便有了多态现象。
InputStreamReader 和InputStream是两个类。
System.in的类型是InputSteam,如果打印它,显示属于java.io.BufferedInputStream
估计就像5楼说的一样,jvm完成了这个过程。
java.lang包下的System类的public static final InputStream in,是System类的一
个常量,但返回类型为InputStream。System.in主要用于读取键盘输入。
我知道的就这些,希望对你有帮助。