关于System.in的困扰。。。。

sure2003 2008-10-18 08:25:07
System类中的类字段对象定义:
> public final static InputStream in = nullInputStream();
打开InputStream类原码,read()为抽象方法;
> public abstract int read() throws IOException;
可在程序中,经常这么用:
char c;
c = (char)System.in.read();

都是抽象方法,没有方法体的。。。怎么回事。。
...全文
158 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xujiaxiang 2008-10-19
  • 打赏
  • 举报
回复
真的是这样,不懂
sure2003 2008-10-19
  • 打赏
  • 举报
回复
问题是这public abstract int read() throws IOException;
没有被重写!!!!!!!!!!
sunxing007 2008-10-18
  • 打赏
  • 举报
回复
想象一下,System.in.readLine()它是要去读键盘输入, 但是jvm运行在操作系统之上, 那么它没有权利直接去读取io硬件, 而且操作系统有windows, lunux, mac等等, 他们的io的实现方式又有差异, 这个只有通过native手段把当前jvm运行之上的操作系统的io映射给System里面的in, in只是一个接口, 用来handle这种实现的最终结果.
aoliwen521 2008-10-18
  • 打赏
  • 举报
回复
我也一直没弄理解SYSTEM.IN是怎么回事。
sure2003 2008-10-18
  • 打赏
  • 举报
回复
楼上的回答,没有。。。
sunxing007 2008-10-18
  • 打赏
  • 举报
回复
InputStream 只是 System.in 的类型描述, 是个接口. 它采用了很多native手段, 去看一下 Java本地接口 吧.
showde123 2008-10-18
  • 打赏
  • 举报
回复
不太确定LZ具体问的是什么。

关于抽象类抽象方法的基本特点之一是:
抽象方法只需要声明,不需要实现。

要理解上一点 还要知道一点:
抽象类必须被继承,抽象方法必须被重写。

也就是说没有实现的必要,因为它早晚要被重写;
但是 有定义的必要,不然,方法不能重写,也就实现不了多态了。


Sunny_kaka 2008-10-18
  • 打赏
  • 举报
回复
没搞明白
一洽客服系统 2008-10-18
  • 打赏
  • 举报
回复
学习
ma_liang 2008-10-18
  • 打赏
  • 举报
回复
Java API 中是这样描述in的:
in
public static final InputStream in
The "standard" input stream. This stream is already open and ready to supply input data. Typically this stream corresponds to keyboard input or another input source specified by the host environment or user.
ZangXT 2008-10-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lihan6415151528 的回复:]
学习
[/Quote]
最近流行换头像?
ZangXT 2008-10-18
  • 打赏
  • 举报
回复
其实这里更有意思的问题是,先把in和out这些final的变量都初始化为空,然后用native方法改变其值。
ZangXT 2008-10-18
  • 打赏
  • 举报
回复
貌似这个问题以前已经问过了,我还贴过代码来着。
huoyin 2008-10-18
  • 打赏
  • 举报
回复
你查查 nullInputStream(); 这个函数是怎么实现的
狂浪吻血 2008-10-18
  • 打赏
  • 举报
回复
System.in.readLine()它是要去读键盘输入

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧