关于PrintStream中的write(int b)方法 在PrintStream中有个write(int b)方法,其中有一行代码:out.write(b);,out应该是在构造器中初始化的,是OutputStream类型的,可是OutputStream类中的write(int b)方法确是abstract的,请问PrintStream中的write(int b)方法中的out.write(b)到底调用了哪个类的write(int b)方法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最简单的办法就是debug但你所说的很有可能是ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, OutputStream, PipedOutputStream 中的一种实现了该方法 怎么debug?实在理不出头绪了,请dx能详细说明一下。 "out应该是在构造器中初始化的"初始化的哪个类就是哪个类 也就是看out是哪个对象的引用 OutputStream是接口 是不能构造实例的 OutputStream out = new ***OutputStream();//后面这个就是你要找的类 可是System.out.println()怎么就能在控制台输出呢?除了FileOutputStream类的write(int b)方法是个native方法看不到代码,OutputStream的子类中的代码也没有往控制台输出的代码。 System.out是标准输出流从你所说的,应该知道是调用了FileOutputStream的write因为是native的,所以你不必关心如何实现了你要输出到控制台用System.out就行了 你的out 非 System.out.println()的out!!!你刚才要找的是哪个类的方法是的 各个类的方法实现的是不一样的 即便名字相同 你同意吧所以out这个流往哪写 是不是控制台 完全由函数内代码实现 你要深究的话可以去研究System.out.println()的源码也就是说你自己可以定义一个输出流 就用out引用吧 你也可以写成tuo 随便你写 好了 别人的out都往一个地方写 比如控制台 文件 你就是不一样 那你就用代码实现往10个地方写吧 这都随便你 明白? davis129:我还真没明白呢! System.out.println()的out是PrintStream类型的 println方法必然是PrintStream类的方法。一直看下去,发现private void write(String s)这个方法中有一行代码:textOut.write(s);textOut在PrintStream中是这么定义的:private BufferedWriter textOut;那么textOut.write(s);应该是调用了BufferedWriter的public void write(String str)方法然后沿着方法调用找下去,一直找到Writer类的abstract public void write(char cbuf[], int off, int len)方法。因为是个abstract方法,于是找不下去了。 流分为节点流 处理流(也可以分为字节流 字符流 这个不说)处理流是封装节点流初始化的 BufferedWriter是个处理流流不可能在一个无始无终的圈里流 流肯定是有始有终的比如: FileOutputStream out = new FileOutputStream(file);file是一个文件对象 也就是说 这个流写操作的时候将写入 这个对象->file 也就是一个文件这就是这个流的终点流也可以从其他方式获取 比如从一个远程连接对象conn上调用一个得到流的函数 函数return一个流 这个流 在连接对象conn初始化时 已经实例化了输入输出的对象 可以是一个File 也可以是一个控制台 道理跟上面new FileOutputStrean(file)一样输入流跟输出流道理是一样的 就是方式变下.......BufferedWriter的write(String str)方法 继承了Writer的public void write(String str) 这不是抽象函数 就是调用的这个 socket是怎样实现的 会用到什么代码? 求助 这个程序怎么运行不了 新手提问:如何判断一个类被实例化了? 都快疯了,我是菜鸟,谁能告诉我这是为什么? 有两个JComboBox,第二个JComboBox的课程名由第一个JComboBox的学生名决定 这两个框的数据来自数据库 关于监听生成文本框的问题~ 还是上面的问题继承出现java.lang.NullPointerException 求助一个java程序 tiles definition的问题 收邮件(图像)-->显示邮件(图像)问题 最后几题。。。。。。谢谢了。。 如何实现重复的JSP code
实在理不出头绪了,请dx能详细说明一下。
"out应该是在构造器中初始化的"初始化的哪个类就是哪个类 也就是看out是哪个对象的引用
OutputStream out = new ***OutputStream();//后面这个就是你要找的类
除了FileOutputStream类的write(int b)方法是个native方法看不到代码,OutputStream的子类中的代码也没有往控制台输出的代码。
你要输出到控制台用System.out就行了
你刚才要找的是哪个类的方法
是的 各个类的方法实现的是不一样的 即便名字相同 你同意吧
所以out这个流往哪写 是不是控制台 完全由函数内代码实现
你要深究的话可以去研究System.out.println()的源码也就是说你自己可以定义一个输出流 就用out引用吧 你也可以写成tuo 随便你写 好了 别人的out都往一个地方写 比如控制台 文件 你就是不一样 那你就用代码实现往10个地方写吧 这都随便你 明白?
我还真没明白呢!
System.out.println()的out是PrintStream类型的
println方法必然是PrintStream类的方法。
一直看下去,发现private void write(String s)这个方法中有一行代码:textOut.write(s);
textOut在PrintStream中是这么定义的:private BufferedWriter textOut;
那么textOut.write(s);应该是调用了BufferedWriter的public void write(String str)方法
然后沿着方法调用找下去,一直找到Writer类的abstract public void write(char cbuf[], int off, int len)方法。因为是个abstract方法,于是找不下去了。
处理流是封装节点流初始化的 BufferedWriter是个处理流
流不可能在一个无始无终的圈里流 流肯定是有始有终的
比如: FileOutputStream out = new FileOutputStream(file);
file是一个文件对象 也就是说 这个流写操作的时候将写入 这个对象->file 也就是一个文件
这就是这个流的终点
流也可以从其他方式获取 比如从一个远程连接对象conn上调用一个得到流的函数
函数return一个流 这个流 在连接对象conn初始化时 已经实例化了输入输出的对象 可以是一个File 也可以是一个控制台 道理跟上面new FileOutputStrean(file)一样
输入流跟输出流道理是一样的 就是方式变下
.......
BufferedWriter的write(String str)方法 继承了Writer的public void write(String str) 这不是抽象函数 就是调用的这个