A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xyh19 高级黑马   /  2013-3-28 10:47  /  2200 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 徐彦淏 于 2013-3-28 13:33 编辑

看到23天的网络编程那里了
关于视频中老毕的一个代码的疑问如下,望高手解答:

PrintWriter out = new PrintWriter(s.getOutputStream(),true);

                String line = null;
                while((line=bufr.readLine())!=null)
                {
                        out.println(line);
                }

1.out.println(line);和System.out.println(line);有何区别呢?分别在啥时候用?
2.PrintWriter out = new PrintWriter(s.getOutputStream(),true);中的s.getOutputStream(),true是怎么回事?

希望大牛们解答下,非常感谢!

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

7 个回复

倒序浏览
1.println 是打印流的一个方法 至于那个out 是你自己的定义的 printWriter
System.out.println是标准输出到控制台
2..PrintWriter out = new PrintWriter(s.getOutputStream(),true)  true表示自动刷新,flase表示不自动刷新.
也就是这个构造方法 PrintWriter(Writer out, boolean autoFlush)
具体可以查看API的

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

回复 使用道具 举报
看看文档吧,其中System的out属性是这样的:
out

public static final PrintStream out

The "standard" output stream. This stream is already open and ready to accept output data. Typically this stream corresponds to display output or another output destination specified by the host environment or user.
For simple stand-alone Java applications, a typical way to write a line of output data is:

     System.out.println(data)

See the println methods in class PrintStream.
是根据主调用环境输出在标准输出窗口的,比如windows的dos窗口

而你说的PrintWriter 中的print方法是将内容输出到流中,两者输出的目标不同

第二个问题,其中第一个参数不就是输出的流么,要向这个流中写数据的,
        第二个参数指的是自动将流中的数据冲出去,不用手动flush了,但只对特定的方法有效:

autoFlush - A boolean; if true, the println, printf, or format methods will flush the output buffer

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

回复 使用道具 举报
out.println()输出到客户端。
    在out.println()中,out是response的实例,是以response为对象进行流输出的,即将内容输出到客户端。
System.out.println()打印在控制台当中。
    System.out.println()用的是标准输出流,这个是输出在控制台上的. 如果想打印在页面,简单点的方法是:
out.print( "要打印的内容" );
    其实在正规的网站建设中,是从来不用out.println()的,都是直接使用标签。

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

回复 使用道具 举报
2.PrintWriter out = new PrintWriter(s.getOutputStream(),true);中的s.getOutputStream(),true是怎么回事?
这应该是socket通信程序中的一个语句。其中的s应该是一个socket对象。s.getOutputStream()就是返回一个服务器与客户端的输出流,true是对PrintWriter out 而言,就是强行把缓冲区的数据输出。s.getOutputStream()返回的是一个节点流,在它上面又套上了一个处理流PrintWriter ,便于输出数据。
回复 使用道具 举报
本帖最后由 王杰123 于 2013-3-28 13:07 编辑

1。
System 类包含一些有用的类字段和方法。它不能被实例化。 在 System 类提供的设施中,有标准输入(static InputStream in )、标准输出(static PrintStream out)和错误输出流(static PrintStream err  );System.out.println()用的是标准输出流,这个是输出在控制台上的.
out 是PrintWriter的对象,PrintWriter类里有方法println()。

2。
PrintWriter  public PrintWriter(Writer out,   boolean autoFlush)创建新 PrintWriter。
参数:out - 字符输出流autoFlush - boolean 变量;如果为 true,则 println、printf 或 format 方法将刷新输出缓冲区

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

回复 使用道具 举报
xyh19 高级黑马 2013-3-28 13:32:18
7#
楼上回答的都挺好的,谢谢大家咯
回复 使用道具 举报
罗平 中级黑马 2013-3-28 13:34:32
8#
那个out.println(line)中的out 是你前面自己定义的
System.out.println(line);中的Out是是java中的一个用于输出的对象
true 是自动将缓存中的数据输出
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马