黑马程序员技术交流社区

标题: System.out.println();这句话是怎么运行的.? [打印本页]

作者: 王峰230321    时间: 2013-7-26 11:35
标题: System.out.println();这句话是怎么运行的.?
本帖最后由 杜光 于 2013-7-27 15:04 编辑

System是什么  .  是一个类吗. ?  为什么 什么包都不加.   也能访问到System.?
如果说System.out  我 现在是能理解.    就是 静态方法.  . out  是一个 静态方法 .?
那 .   后面 .println  是 怎么回事呢. ?     是out里还有静态方法 ?    方法能定义在方法里吗. ?  
那如果不是的话.   是 怎么 通过  类名.方法.方法   这样的方式来进行访问的. ?

作者: 王磊    时间: 2013-7-26 11:45
System是java.lang包中的一个类。
out是这个类中的一个字段,在System内部被static final修饰的一个PrintStream类型的变量,可将其看做为一个常量,这个变量在System内部默认指向的是控制台。
System.out就相当于类名调用了这个成员变量,并得到了一个printStream流对象。
而println是printStream类中的方法,也就是用System.out得到的PrintStream对象去调用了PrintStream类中的println方法。

楼主可以自己通过API弄清楚这种关系的。或者读读源代码,一目了然。。。。
作者: a2213502    时间: 2013-7-26 11:59
system 是个类 public final class System  extends Object
out是printStream 类的一个对象
它有println()这个静态方法
可以直接用类名来调用
作者: の放下执著    时间: 2013-7-26 17:07
public final class Systemextends Object        System是一个类,在lang包中的类可以不加,jvm会帮你搞定。
static PrintStream out  “标准”输出流            out不是一个静态方法,是一个字段。
public static final PrintStream out                 out只是定义在System类中的一个字段,打印流PrintStream  类型的一个字段。
public void println()                                     这是打印流PrintStream类里面的一个方法,非静态的。字段out自然就能调用了
out是定义在System类中的一个字段(实例变量),类型是PrintStream。println是printStream的一个非静态方法。
所以就有了:System.out.println();


作者: jialihong    时间: 2013-7-26 17:21
System 是一个类,out是一个static PrintStream 对象。由于它是“静态”的,所以不需要我们创建任何东西,所以只需直接用它即可。
println()是“把我给你的东西打印到控制台,并用一个新行结束”。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2